• Java 用HTTP的方式发送JSON报文请求


    前言: 

      项目调用第三方接口时,通常是用socket或者http的通讯方式发送请求:http 为短连接,客户端发送请求都需要服务器端回送响应,请求结束后,主动释放链接。Socket为长连接:通常情况下Socket 连接就是 TCP 连接,因此 Socket 连接一旦建立,通讯双方开始互发数据内容,直到双方断开连接。下面介绍HTTP的方式发送和接收JSON报文。

    需求:

      用HTTP的方式,向URL为10.10.10.110:8888地址发送json报文,返回的结果也是json报文。

    主要代码如下:

     1             String resp= null;
     2             JSONObject obj = new JSONObject();
     3             obj.put("name", "张三");   
     4             obj.put("age", "18");   
     5             String query = obj.toString();
     6             log.info("发送到URL的报文为:");
     7             log.info(query);
     8             try {
     9                 URL url = new URL("http://10.10.10.110:8888"); //url地址
    10 
    11                 HttpURLConnection connection = (HttpURLConnection) url.openConnection();
    12                 connection.setDoInput(true);
    13                 connection.setDoOutput(true);
    14                 connection.setRequestMethod("POST");
    15                 connection.setUseCaches(false);
    16                 connection.setInstanceFollowRedirects(true);
    17                 connection.setRequestProperty("Content-Type","application/json");
    18                 connection.connect();
    19 
    20                 try (OutputStream os = connection.getOutputStream()) {
    21                     os.write(query.getBytes("UTF-8"));
    22                 }
    23 
    24                 try (BufferedReader reader = new BufferedReader(
    25                         new InputStreamReader(connection.getInputStream()))) {
    26                     String lines;
    27                     StringBuffer sbf = new StringBuffer();
    28                     while ((lines = reader.readLine()) != null) {
    29                         lines = new String(lines.getBytes(), "utf-8");
    30                         sbf.append(lines);
    31                     }
    32                     log.info("返回来的报文:"+sbf.toString());
    33                     resp = sbf.toString();    
    34                    
    35                 }
    36                 connection.disconnect();
    37 
    38             } catch (Exception e) {
    39                 e.printStackTrace();
    40             }finally{
    41                 JSONObject json = (JSONObject)JSON.parse(resp);
    42             }

    网上还有一种拼json发送报文的方式,也把代码分享出来:

     1 String resp = null;
     2 String name = request.getParameter("userName");
     3 String age = request.getParameter("userAge");
     4 String query = "{"name":""+name+"","age":""+age+""}";
     5 
     6 try {
     7                 URL url = new URL("http://10.10.10.110:8888"); //url地址
     8 
     9                 HttpURLConnection connection = (HttpURLConnection) url.openConnection();
    10                 connection.setDoInput(true);
    11                 connection.setDoOutput(true);
    12                 connection.setRequestMethod("POST");
    13                 connection.setUseCaches(false);
    14                 connection.setInstanceFollowRedirects(true);
    15                 connection.setRequestProperty("Content-Type","application/json");
    16                 connection.connect();
    17 
    18                 try (OutputStream os = connection.getOutputStream()) {
    19                     os.write(query.getBytes("UTF-8"));
    20                 }
    21 
    22                 try (BufferedReader reader = new BufferedReader(
    23                         new InputStreamReader(connection.getInputStream()))) {
    24                     String lines;
    25                     StringBuffer sbf = new StringBuffer();
    26                     while ((lines = reader.readLine()) != null) {
    27                         lines = new String(lines.getBytes(), "utf-8");
    28                         sbf.append(lines);
    29                     }
    30                     log.info("返回来的报文:"+sbf.toString());
    31                     resp = sbf.toString();    
    32                    
    33                 }
    34                 connection.disconnect();
    35 
    36             } catch (Exception e) {
    37                 e.printStackTrace();
    38             }finally{
    39                 JSONObject json = (JSONObject)JSON.parse(resp);
    40             }

    两种方式其实都是一样的。写得不对的地方,往各位撸过的大拿指正~

  • 相关阅读:
    并发解决方案
    主外键
    ms
    mq消息丢失
    五种IO模型
    程序运行时间计算gettimeofday&clock_gettime
    exec与xargs区别
    mysql修改数据存放路径(linux)
    od用不同的编码输出文件内容
    segfault at f0 ip 00007f9954108feb sp 00007fffb5e64fc0 error 4 in libxxx.so[7f99540df000+54000]
  • 原文地址:https://www.cnblogs.com/jamespan23/p/6679247.html
Copyright © 2020-2023  润新知