我在 resygwt 上使用这样的 API 提供了基于 REST 的服务:
@Path("/search")
@GET
List<User> search(@QueryParam("login") String loginMask) throws RemoteException;
我收到此请求的“格式错误的 URI 序列”:
http://devsys23:8080/rest/search?login=%25spa%20ce%25
这很奇怪,因为在 JavaDoc 中提到,默认情况下应该支持这样的请求:
- 将 HTTP 查询参数的值绑定到资源方法参数,
- 资源类字段或资源类 bean 属性。
- 除非使用 {@link Encoded} 禁用此值,否则对值进行 URL 解码
- 注解。可以使用 {@link DefaultValue} 指定默认值
- 注解。
我尝试使用 useBodyEncodingForURI 和 URIEncoding="UTF-8" 在 server.xml 中编辑 tomcat 连接器。还包括 org.springframework.web.filter.CharacterEncodingFilter 并设置了 forceEncoding,但它仍然不起作用 =(
我应该怎么做才能指定应该解码登录参数?如果有的话,谢谢你的建议。