繁体   English   中英

如何在客户端 JavaEE 7 的 WebTarget.queryParam 名称中添加特殊字符

[英]How add special characters in WebTarget.queryParam name in client JavaEE 7

我尝试使用客户端库 javax.ws.rs 发出请求

我正在尝试添加包含字符 [ 和 ] 的参数名称来查询参数,对于编码的特殊字符,我使用 URLEncoder.encode()。 但是在请求之后,响应中包含没有这个参数的数据,服务器忽略了这个请求参数。 我故意使用“curl”在命令行上发出请求,但此参数中有错误,并得到与应用程序中的请求相同的结果。 错误显然在编码的参数名称中,但我不明白如何正确添加包含特殊字符的参数。

编码:

    WebTarget webTarget = new Client().target(uri);
    String key = "filters[Time].Start";
    key = URLEncoder.encode(key,StandardCharsets.UTF_8.toString());

    String value = "2022-08-27+17:00:00";
    value = URLEncoder.encode(value,StandardCharsets.UTF_8.toString());
    System.out.println(key + " " + value);
    webTarget = webTarget.queryParam("per_page","10");
    webTarget = webTarget.queryParam(key,value);
    webTarget = webTarget.queryParam("order_by","time");

    invocationBuilder = webTarget.request(MediaType.APPLICATION_JSON);
    Response response = invocationBuilder.get();

结果输出:过滤器%5BTime%5D.Start 2022-08-27%2B17%3A00%3A00

通过@cyberbrain 的建议,我确实通过使用密钥“-A”的帮助“tcpdump”实用程序在服务器中检查了我的请求。

我确实通过 curl 和我的 java 应用程序请求并比较数据。

就我而言,问题在于值参数,我的值等于“2022-08-27+17:00:00”。 添加查询参数后,此符号“+”编码为代码“%2B”,这不喜欢我的服务器。 我刚刚将符号“+”替换为符号空间(代码 %20)的值(“2022-08-27 17:00:00”)。 之后我从我的服务器获得了正确的数据

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM