簡體   English   中英

如何在java中的http post中發送json對象

[英]How can I send json object in http post in java

我想發送一個JSON對象(注意它不應該轉換成字符串,因為服務器端代碼基於Spring啟動項目並且有params(@RequestBody PCAP pcap))我有我的下面的代碼,但它轉換為正文成為一個字符串,給我400個不良請求。

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){

    }

}

注意:服務器端代碼是

@RequestMapping(value = URIConstansts.PCAP, produces = { "application/json" }, method = RequestMethod.POST)
    public  ResponseEntity getPcap(HttpServletRequest request,@RequestBody PcapParameters pcap_params )

我更喜歡在HttpClient上繼續使用HttpURLConnection。 SE問題中可以找到一些關於優勢的評論

output.write(json.toString());

應改為

byte[] jsonBytes = json.getBytes("UTF-8");
output.write(jsonBytes);
output.flush();

寫入對象后不要忘記調用flush(),並且在寫入操作之前應該指示UTF-8格式。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM