[英]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.