HTTP POST using JSON in Java

http, java, json, post

Solution

Here is what you need to do:

- Get the Apache `HttpClient`, this would enable you to make the required request

- Create an `HttpPost` request with it and add the header `application/x-www-form-urlencoded`

- Create a `StringEntity` that you will pass JSON to it

- Execute the call

The code roughly looks like (you will still need to debug it and make it work):

// @Deprecated HttpClient httpClient = new DefaultHttpClient();
HttpClient httpClient = HttpClientBuilder.create().build();
try {
    HttpPost request = new HttpPost("http://yoururl");
    StringEntity params = new StringEntity("details={\"name\":\"xyz\",\"age\":\"20\"} ");
    request.addHeader("content-type", "application/x-www-form-urlencoded");
    request.setEntity(params);
    HttpResponse response = httpClient.execute(request);
} catch (Exception ex) {
} finally {
    // @Deprecated httpClient.getConnectionManager().shutdown(); 
}

Problem

I would like to make a simple HTTP POST using JSON in Java. Let's say the URL is `www.site.com` and it takes in the value `{"name":"myname","age":"20"}` labeled as `'details'` for example. How would I go about creating the syntax for the POST? I also can't seem to find a POST method in the JSON Javadocs.

Original source

Related problems