HTTP POST request with JSON String in JAVA
85,289
Finally I managed to find the solution to my problem ...
public static void SaveWorkFlow() throws IOException
{
CloseableHttpClient httpClient = HttpClients.createDefault();
HttpPost post = new HttpPost(myURLgoesHERE);
List<NameValuePair> params = new ArrayList<>();
params.add(new BasicNameValuePair("task", "savemodel"));
params.add(new BasicNameValuePair("code", generatedJSONString));
CloseableHttpResponse response = null;
Scanner in = null;
try
{
post.setEntity(new UrlEncodedFormEntity(params));
response = httpClient.execute(post);
// System.out.println(response.getStatusLine());
HttpEntity entity = response.getEntity();
in = new Scanner(entity.getContent());
while (in.hasNext())
{
System.out.println(in.next());
}
EntityUtils.consume(entity);
} finally
{
in.close();
response.close();
}
}
Author by
Blerta Dhimitri
Java EE Developer at Alten Italia (www.alten.it)
Updated on September 19, 2020Comments
-
Blerta Dhimitri over 3 years
I have to make a http Post request using a JSON string I already have generated. I tried different two different methods :
1.HttpURLConnection 2.HttpClient
but I get the same "unwanted" result from both of them. My code so far with HttpURLConnection is:
public static void SaveWorkflow() throws IOException { URL url = null; url = new URL(myURLgoeshere); HttpURLConnection urlConn = null; urlConn = (HttpURLConnection) url.openConnection(); urlConn.setDoInput (true); urlConn.setDoOutput (true); urlConn.setRequestMethod("POST"); urlConn.setRequestProperty("Content-Type", "application/json"); urlConn.connect(); DataOutputStream output = null; DataInputStream input = null; output = new DataOutputStream(urlConn.getOutputStream()); /*Construct the POST data.*/ String content = generatedJSONString; /* Send the request data.*/ output.writeBytes(content); output.flush(); output.close(); /* Get response data.*/ String response = null; input = new DataInputStream (urlConn.getInputStream()); while (null != ((response = input.readLine()))) { System.out.println(response); input.close (); } }
My code so far with HttpClient is:
public static void SaveWorkflow() { try { HttpClient httpClient = new DefaultHttpClient(); HttpPost postRequest = new HttpPost(myUrlgoeshere); StringEntity input = new StringEntity(generatedJSONString); input.setContentType("application/json;charset=UTF-8"); postRequest.setEntity(input); input.setContentEncoding(new BasicHeader(HTTP.CONTENT_TYPE,"application/json;charset=UTF-8")); postRequest.setHeader("Accept", "application/json"); postRequest.setEntity(input); HttpResponse response = httpClient.execute(postRequest); BufferedReader br = new BufferedReader( new InputStreamReader((response.getEntity().getContent()))); String output; while ((output = br.readLine()) != null) { System.out.println(output); } httpClient.getConnectionManager().shutdown(); } catch (MalformedURLException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } }
Where generated JsonString is like this:
{"description":"prova_Process","modelgroup":"","modified":"false"}
The response I get is:
{"response":false,"message":"Error in saving the model. A JSONObject text must begin with '{' at 1 [character 2 line 1]","ids":[]}
Any idea please?
-
Sundar G about 9 yearscan you list down the required jars for this
-
XcodeNOOB almost 9 yearsthere you go ---> compile group: 'org.apache.httpcomponents' , name: 'httpclient-android' , version: '4.3.5.1' | but it's deprecated so try to find something else :-\