【发布时间】:2014-11-09 05:39:06
【问题描述】:
我在 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,但它仍然不起作用 =(
我应该怎么做才能指定应该解码登录参数? 感谢您的建议。
【问题讨论】:
-
您的问题真的与 RestyGWT 相关吗?据我了解,这个问题更多是用于解码查询参数值的 tomcat 问题。你想让resty不编码查询参数还是你的后端解码它们?