zoukankan      html  css  js  c++  java
  • 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             }

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

  • 相关阅读:
    Educational Codeforces Round 10 C. Foe Pairs 水题
    Educational Codeforces Round 10 B. z-sort 构造
    CDOJ 1048 Bob's vector 三分
    Educational Codeforces Round 10 A. Gabriel and Caterpillar 模拟
    第14届电子科大初赛民间盗版部分题目题解
    HDU 5654 xiaoxin and his watermelon candy 离线树状数组 区间不同数的个数
    HDU 5653 Bomber Man wants to bomb an Array. dp
    HDU 5652 India and China Origins 二分+并查集
    HDU 5651 xiaoxin juju needs help 数学
    HDU 5650 so easy 数学
  • 原文地址:https://www.cnblogs.com/jamespan23/p/6679247.html
Copyright © 2011-2022 走看看