当前位置: 首页 > 知识库问答 >
问题:

如何用java在http post中发送json对象

詹甫
2023-03-14

我想发送一个JSON对象(注意,它不应该转换成字符串,因为服务器端代码是基于Spring starter项目的,它的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 )

共有1个答案

司空通
2023-03-14

我更喜欢继续使用HttpURLConnection而不是HttpClient。在这个问题上可以找到一些关于优势的评论

output.write(json.tostring());

应更改为

byte[] jsonBytes = json.getBytes("UTF-8");
output.write(jsonBytes);
output.flush();
 类似资料:
  • 我正试图用android应用程序向我的web服务器发送一个Json对象。我发现的每个示例都使用了被android 6删除的HttpClient。有人能给我举一个HttpURLConnection方法的例子吗。

  • 资源 ComplexObject类只是一个带有字符串的类。当我点击URL:http://localhost:8080/simple-service-webapp/webapi/myresource/This work时,我得到的是“get it!” 但是当我点击:http://localhost:8080/simple-service-webapp/webapi/myresource/comple

  • 我正在制作一个文本游戏,需要将一个对象(地点)上传到Java web服务器。(玩家需要共享数据,但这里不关心安全性)我正在使用java。网http API。我目前的方法是 但这会抛出。我真的不知道该怎么解决这个问题,所有的教程和StackOverflow问题要么使用大量的第三方API,要么使用过时的代码(java 9之前的版本),要么想要发送字符串或int之类的东西。这些都是无益的。我不太确定这段

  • 问题内容: 我正在使用Apache HttpClient发送RESTful JSON POST请求(至第三方API) 我应该对JSON正文进行URL编码吗? 并且,如果内容中的某些内容已经被URL编码了(例如,我发送的HTML带有一些带有URL编码的字符的链接,例如@ 22),我是否应该期望在不解码的情况下按原样获取内容? 例如,如果我正在做这样的事情 在获取“ html”键的值之后,我是否应该期

  • 问题内容: 我试图替换在终端中运行的Netcat命令,该命令将重置服务器上的某些数据。netcat命令如下所示: 我一直试图在Java中实现它,因为我希望能够从正在开发的应用程序中调用此命令。我遇到了问题,但命令从未在服务器上执行。 这是我的Java代码: 代码还挂在应读取的while循环上,我不知道为什么。我一直在使用Wireshark捕获数据包,并且输出的数据看起来是相同的: 也许其余的包装袋

  • 问题内容: 我想发送以下JSON文本 到Web服务并读取响应。我知道如何读取JSON。问题是上述JSON对象必须以变量名发送。 我该如何从android做到这一点?创建请求对象,设置内容标头等步骤是什么。 问题答案: Android没有用于发送和接收HTTP的特殊代码,您可以使用标准Java代码。我建议使用Android随附的Apache HTTP客户端。这是我用来发送HTTP POST的代码片段