如何将json添加到GET请求查询参数?

时间:2016-05-31 10:33:43

标签: java json http url get

我希望在查询参数中将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();
}

1 个答案:

答案 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