我希望在查询参数中将json发送到GET请求以获取该json请求的响应。
如果我使用这样的链接:
www.url.com/search?query1=abc&filter = {"或":[{"术语#34; {" VIN":[& #34; 1g1105sa2gu104086"]}}]}
如果我将其作为sysout语句执行,则url部分显示为蓝色,如下所示:
www.url.com/search?query1=abc&过滤= {"或":[{"术语#34; {" VIN":[" 1g1105sa2gu104086" ]}}]}
并且json看起来好像不是请求的一部分。
要创建URL,我将操纵的JSON字符串附加到URL,然后发送请求。但它看起来像两个不同的字符串。
我也使用编码器对JSON部分进行编码
滤波器= {"或":[{"术语#34; {" VIN":[" 1g1105sa2gu104086"]}}]}
在这种情况下,括号和双引号中的json中的所有内容都被编码,甚至是相等的符号。此外,链接显示为蓝色,但在发送请求时,它会抛出400 Bad Request的异常,因为equalTo也会转换为其编码格式。
我尝试只编码JSON部分,将filter=
留在网址中,如下所示:
www.url.com/search?query1=abc&filter= {"或":[{"术语#34; {" VIN":[" 1g1105sa2gu104086"]} }]}
发送请求后显示的结果与我想要的结果不同。
我使用以下代码创建JSON:
private String getVinFromInventoryRequest(String vin) throws JSONException {
JSONObject request = new JSONObject();
JSONArray orArray = new JSONArray();
for(String vin : vins) {
JSONObject termsObject = new JSONObject();
JSONObject vinsObject = new JSONObject();
JSONArray vinsArray = new JSONArray();
vinsArray.put(vin);
vinsObject.put("vin", vinsArray);
termsObject.put("terms", vinsObject);
orArray.put(termsObject);
}
request.put("or", orArray);
System.out.println("OfferMapper.getVinFromInventoryRequest " + request.toString());
return request.toString();
}
答案 0 :(得分:0)
还可以通过google搜索看到我发现的内容:
JSONObject json = new JSONObject();
json.put("someKey", "someValue");
CloseableHttpClient httpClient = HttpClientBuilder.create().build();
try {
HttpPost request = new HttpPost("http://yoururl");
StringEntity params = new StringEntity(json.toString());
request.addHeader("content-type", "application/json");
request.setEntity(params);
httpClient.execute(request);
// handle response here...
} catch (Exception ex) {
// handle exception here
} finally {
httpClient.close();
}
有关详细信息,请参阅:HTTP POST using JSON in Java