How to make a post request to a json RESTful Service from Java?
<p>I am trying to make a <code>POST</code> request from java, to an existing RESTful Service, in order to get the json response and store it in a String.</p>

<p>Let's assume that the RESTful Service Url is the following:</p>

<pre><code>https://myStore.com/REST-API/
</code></pre>

<p>which is a kind of store with products and you want to search for an item. In order to make a search you have to send also the <code>Request Body</code> as such:</p>

<pre><code>{
   "searchProduct": "Football"
}
</code></pre>

<p>In order to make that post I implemented the following method in java:</p>

<pre><code>public String getJsonResponse(String searchProduct) throws Exception {

    String url = "https://myStore.com/REST-API/";
    String requestBody = "{\"searchProduct\": \"" + searchProduct + "\"}";

    URL obj = new URL(url);

    HttpsURLConnection connection = (HttpsURLConnection) obj
            .openConnection();

    connection.setDoOutput(true);
    connection.setRequestMethod("POST");
    connection.setRequestProperty("Content-Type", "application/json");

    OutputStream outputStream = connection.getOutputStream(); // &lt;-- I get an exception.

    outputStream.write(requestBody.getBytes());
    outputStream.flush();

    BufferedReader in = new BufferedReader(new InputStreamReader(
            connection.getInputStream()));
    String inputLine;
    StringBuffer response = new StringBuffer();

    while ((inputLine = in.readLine()) != null) {
        response.append(inputLine);
    }

    in.close();

    return response.toString();

}
</code></pre>

<p>The exception is the following:</p>

<pre><code>Exception in thread "main" java.net.UnknownHostException: myStore.com
at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:184)
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
at java.net.Socket.connect(Socket.java:589)
at sun.security.ssl.SSLSocketImpl.connect(SSLSocketImpl.java:668)
at sun.security.ssl.BaseSSLSocketImpl.connect(BaseSSLSocketImpl.java:173)
at sun.net.NetworkClient.doConnect(NetworkClient.java:180)
at sun.net.www.http.HttpClient.openServer(HttpClient.java:432)
at sun.net.www.http.HttpClient.openServer(HttpClient.java:527)
at sun.net.www.protocol.https.HttpsClient.&lt;init&gt;(HttpsClient.java:264)
at sun.net.www.protocol.https.HttpsClient.New(HttpsClient.java:367)
at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.getNewHttpClient(AbstractDelegateHttpsURLConnection.java:191)
at sun.net.www.protocol.http.HttpURLConnection.plainConnect0(HttpURLConnection.java:1105)
at sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:999)
at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:177)
at sun.net.www.protocol.http.HttpURLConnection.getOutputStream0(HttpURLConnection.java:1283)
at sun.net.www.protocol.http.HttpURLConnection.getOutputStream(HttpURLConnection.java:1258)
at sun.net.www.protocol.https.HttpsURLConnectionImpl.getOutputStream(HttpsURLConnectionImpl.java:250)
at com.stavros.restfulServices.Requester.getJsonRespondingResults(Requester.java:70)
at com.stavros.restfulServices.MyMain.main(MyMain.java:11)
</code></pre>

<p>I do not know why I am getting this exception, but in case you have an idea or you have also faced the same problem, I would appreciate it if you were posting a suggestion or an answer.</p>