zoukankan      html  css  js  c++  java
  • Java 用HTTP的方式发送JSON报文请求

    前言: 

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

    需求:

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

    主要代码如下:

    String resp= null;
                JSONObject obj = new JSONObject();
                obj.put("name", "张三");   
                obj.put("age", "18");   
                String query = obj.toString();
                log.info("发送到URL的报文为:");
                log.info(query);
                try {
                    URL url = new URL("http://127.0.0.1:8888"); //url地址
    
                    HttpURLConnection connection = (HttpURLConnection) url.openConnection();
                    connection.setDoInput(true);
                    connection.setDoOutput(true);
                    connection.setRequestMethod("POST");
                    connection.setUseCaches(false);
                    connection.setInstanceFollowRedirects(true);
                    connection.setRequestProperty("Content-Type","application/json");
                    connection.connect();
    
                    try (OutputStream os = connection.getOutputStream()) {
                        os.write(query.getBytes("UTF-8"));
                    }
    
                    try (BufferedReader reader = new BufferedReader(
                            new InputStreamReader(connection.getInputStream()))) {
                        String lines;
                        StringBuffer sbf = new StringBuffer();
                        while ((lines = reader.readLine()) != null) {
                            lines = new String(lines.getBytes(), "utf-8");
                            sbf.append(lines);
                        }
                        log.info("返回来的报文:"+sbf.toString());
                        resp = sbf.toString();    
                       
                    }
                    connection.disconnect();
    
                } catch (Exception e) {
                    e.printStackTrace();
                }finally{
                    JSONObject json = (JSONObject)JSON.parse(resp);
                }

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

    String resp = null;
    String name = request.getParameter("userName");
    String age = request.getParameter("userAge");
    String query = "{"name":""+name+"","age":""+age+""}";
    
    try {
                    URL url = new URL("http://10.10.10.110:8888"); //url地址
    
                    HttpURLConnection connection = (HttpURLConnection) url.openConnection();
                    connection.setDoInput(true);
                    connection.setDoOutput(true);
                    connection.setRequestMethod("POST");
                    connection.setUseCaches(false);
                    connection.setInstanceFollowRedirects(true);
                    connection.setRequestProperty("Content-Type","application/json");
                    connection.connect();
    
                    try (OutputStream os = connection.getOutputStream()) {
                        os.write(query.getBytes("UTF-8"));
                    }
    
                    try (BufferedReader reader = new BufferedReader(
                            new InputStreamReader(connection.getInputStream()))) {
                        String lines;
                        StringBuffer sbf = new StringBuffer();
                        while ((lines = reader.readLine()) != null) {
                            lines = new String(lines.getBytes(), "utf-8");
                            sbf.append(lines);
                        }
                        log.info("返回来的报文:"+sbf.toString());
                        resp = sbf.toString();    
                       
                    }
                    connection.disconnect();
    
                } catch (Exception e) {
                    e.printStackTrace();
                }finally{
                    JSONObject json = (JSONObject)JSON.parse(resp);
                }

    两种方式其实都是一样的。

  • 相关阅读:
    二元关系最小割
    DG观察日志传输
    [WC2007]剪刀石头布——费用流
    备库报 ORA-00313、ORA-00312、ORA-27037
    「清华集训 2017」无限之环
    The listener supports no services
    [SDOI2010]星际竞速——费用流
    ORA-16055: FAL request rejected
    [总结]网络流
    ORA-16047: DGID mismatch between destination setting and standby
  • 原文地址:https://www.cnblogs.com/wqsbk/p/6771045.html
Copyright © 2011-2022 走看看