为了账号安全,请及时绑定邮箱和手机立即绑定

在 JAX-RS 中的查询参数中转义 `%` 符号

在 JAX-RS 中的查询参数中转义 `%` 符号

侃侃尔雅 2021-08-25 10:06:50
我尝试使用 Jersey 或 Resteasy 中的任何一个发送带有一些 URL 字符串作为参数的 GET 请求Response response = new ResteasyClientBuilder()        .build()        .target(UriBuilder.fromPath("https://foo.bar"))        .queryParam("url", "http://hostname.com/The%20URL%20with spaces.jpg")        .request()        .get();两种实现都发送https://foo.bar?url=http%3A%2F%2Fhostname.com%2FThe%20URL%20with%20spaces.jpg我假设原始空间被转义,%20而原始空间%20在查询参数中被双重转义。但事实并非如此。原始空间和%20混合,在服务器端,我得到未转义的字符串,所有字符串都%20转换为空格,并且字符串被破坏。根据Resteasy 的源代码,它“保持编码值“%...”和模板参数完整”。但是我在 JEE 文档中没有找到任何关于这种行为的词。我应该在将字符串添加为参数之前对其进行转义吗?我应该使用什么转义器来确保它转义所有"%..." and template parameters,并且它在参数中转义的所有内容都被服务器成功转义?
查看完整描述

1 回答

  • 1 回答
  • 0 关注
  • 144 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信