How can I send json object in http post in java
47,816
I prefer to continue with HttpURLConnection over HttpClient. Some comments over advantages can be found at this SE question
output.write(json.toString());
should be changed to
byte[] jsonBytes = json.getBytes("UTF-8");
output.write(jsonBytes);
output.flush();
Do not forget to call flush() after writing the object and UTF-8 format should be instructed before write operation.
Author by
arpit joshi
Updated on July 09, 2022Comments
-
arpit joshi almost 2 years
I want to send a JSON object(Note it should not be converted into a string as the server side code is based on the Spring starter project and has params as (@RequestBody PCAP pcap) )I have my below code but it converts the body into a string which gives me 400 bad request .
private void sendData(String ip){ try{ JSONObject json=new JSONObject(); json.put("time_range", "22-23"); json.put("flow_id", "786"); json.put("ip_a", "192.65.78.22"); json.put("port_a", "8080"); json.put("regex", "%ab"); URL url=new URL("http://"+ip+":8080/pcap"); HttpURLConnection httpcon=(HttpURLConnection)url.openConnection(); httpcon.setDoOutput(true); httpcon.setRequestMethod("POST"); httpcon.setRequestProperty("Accept", "application/json"); httpcon.setRequestProperty("Content-Type", "application/json"); Cookie cookie=new Cookie("user", "abc"); cookie.setValue("store"); httpcon.setRequestProperty("Accept", "application/json"); httpcon.setRequestProperty("Cookie", cookie.getValue()); OutputStreamWriter output=new OutputStreamWriter(httpcon.getOutputStream()); System.out.println(json); output.write(json.toString()); httpcon.connect(); String output1=httpcon.getResponseMessage(); System.out.println(output1); }catch(Exception e){ } }
Note: Server side code is
@RequestMapping(value = URIConstansts.PCAP, produces = { "application/json" }, method = RequestMethod.POST) public ResponseEntity getPcap(HttpServletRequest request,@RequestBody PcapParameters pcap_params )