Java 由于%26,浏览器和邮递员返回reults,但Rest模板返回0个结果
在我的url中有一个查询部分。在查询中,我通过了%26。 范例 如果我在邮递员或浏览器中运行相同的URL,则返回21个结果,但如果我在RestTemplate中运行,则返回0个结果。 我认为API无法识别%26 我在Python中也尝试了相同的URL,它返回了21个结果 示例代码Java 由于%26,浏览器和邮递员返回reults,但Rest模板返回0个结果,java,spring,resttemplate,Java,Spring,Resttemplate,在我的url中有一个查询部分。在查询中,我通过了%26。 范例 如果我在邮递员或浏览器中运行相同的URL,则返回21个结果,但如果我在RestTemplate中运行,则返回0个结果。 我认为API无法识别%26 我在Python中也尝试了相同的URL,它返回了21个结果 示例代码 url = "http://host.com/api/1/searcharticles?key=XXXXXX&query=(subject:"Polls %26 Surveys")"; byte[] gzipR
url = "http://host.com/api/1/searcharticles?key=XXXXXX&query=(subject:"Polls %26 Surveys")";
byte[] gzipResponse = restTemplate.exchange(metabaseUrl, HttpMethod.GET, entity, byte[].class).getBody();
String string = new String(gzipResponse);
System.out.println(string);
在使用RestTemplate时,不要仅使用%26,请尝试使用URLEncoder
URLEncoder.encode(your url string, "UTF-8")
两件事
第一名:
您的url变量看起来不正确。应该是
url = "http://host.com/api/1/searcharticles?key=XXXXXX&query=(subject:\"Polls %26 Surveys\")";
秒:
你的URL是经过编码的,所以你需要在像这样发送之前对其进行解码
String url = URLDecoder.decode("Polls %26 Surveys", "UTF-8");
System.out.println(url);
OUTPUT:
Polls & Surveys
您是否尝试过这样做,只要在使用之前对url进行编码,就不需要使用
%26
url = "http://host.com/api/1/searcharticles?key=XXXXXX&query=(subject:\"Polls & Surveys\")";
url = URLEncoder.encode(url, "UTF-8");
byte[] gzipResponse = restTemplate.exchange(url, HttpMethod.GET, entity, byte[].class).getBody();
String string = new String(gzipResponse);
System.out.println(string);
为什么url中有%26?这是查询的一部分。比如query=“subject:“民意测验和调查”。因为&在Java中不起作用,所以我将其设置为%26。您可以使用UriComponentBuilder在rest模板中传递参数。此外,您还可以对它们进行编码。
url = "http://host.com/api/1/searcharticles?key=XXXXXX&query=(subject:\"Polls & Surveys\")";
url = URLEncoder.encode(url, "UTF-8");
byte[] gzipResponse = restTemplate.exchange(url, HttpMethod.GET, entity, byte[].class).getBody();
String string = new String(gzipResponse);
System.out.println(string);