post中发送json对象

post中发送json对象

本文介绍了如何在java中的http post中发送json对象的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想发送一个JSON对象(注意它不应该转换成字符串,因为服务器端代码基于Spring启动项目并且有params(@RequestBody PCAP pcap))我有下面的代码但是它将正文转换为一个字符串,给我400个错误请求。

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

    }

}

注意:服务器端代码是

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


推荐答案

以下是您需要做的事情:

Here is what you need to do:


  1. 获取Apache HttpClient,这将使您能够发出所需的请求

  2. 使用它创建一个HttpPost请求并添加标题application / x-www-form-urlencoded

  3. 创建一个将JSON传递给它的StringEntity

  4. 执行调用

  1. Get the Apache HttpClient, this would enable you to make the required request
  2. Create an HttpPost request with it and add the header "application/x-www-form-urlencoded"
  3. Create a StringEntity that you will pass JSON to it
  4. Execute the call

代码粗略看起来(你仍然需要调试它并让它工作)

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

HttpClient httpClient = new DefaultHttpClient(); //Deprecated
HttpClient httpClient = HttpClientBuilder.create().build(); //Use this instead

try {
    HttpPost request = new HttpPost("http://yoururl");
    StringEntity params =new StringEntity("details={\"name\":\"myname\",\"age\":\"20\"} ");
    request.addHeader("content-type", "application/x-www-form-urlencoded");
    request.setEntity(params);
    HttpResponse response = httpClient.execute(request);

    // handle response here...
}catch (Exception ex) {
    // handle exception here
} finally {
    httpClient.getConnectionManager().shutdown(); //Deprecated
}

这篇关于如何在java中的http post中发送json对象的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

07-31 05:16