【问题标题】:Restygwt: malformed URI sequenceRestygwt:格式错误的 URI 序列
【发布时间】: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不编码查询参数还是你的后端解码它们?

标签: java encode resty-gwt


【解决方案1】:

如果你想解码这个值,你可以创建一个ContainerResponseFilter,将它注册到你的ResourceConfig 并执行类似的操作

String loginValue= queryParams.get("login");
loginValue= URLDecoder.decode(loginValue, "UTF-8");

也许 RestyGWT 默认对所有参数进行编码。

需要在restyGWT google讨论上提问:https://groups.google.com/forum/#!forum/restygwt

【讨论】:

    猜你喜欢
    • 2015-05-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-21
    • 2018-04-24
    • 2011-12-09
    • 2012-02-22
    • 2019-08-10
    相关资源
    最近更新 更多