java后台发送请求获取数据,并解析json数据

  先写一个发送请求的一个工具类BackEndHttpRequest

 

package com.bs.utils;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.URL;
import java.net.URLConnection;
import java.util.List;
import java.util.Map;

public class BackEndHttpRequest {
    /**
     * 向指定的URL发送GET方法的请求
     * @param url    发送请求的URL
     * @param param  请求参数,请求参数应该是 name1=value1&name2=value2 的形式 
     * @return       远程资源的响应结果 
     */
    public static String sendGet(String url, String param) {
        String result = "";
        BufferedReader bufferedReader = null;
        try {
            //1、读取初始URL
            String urlNameString = url + "?" + param;
            //2、将url转变为URL类对象
            URL realUrl = new URL(urlNameString);
            
            //3、打开和URL之间的连接
            URLConnection connection = realUrl.openConnection();
            //4、设置通用的请求属性
            connection.setRequestProperty("accept", "*/*");
            connection.setRequestProperty("connection", "Keep-Alive");
            connection.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
            //connection.setRequestProperty("Content-Type", "application/json; charset=utf-8");
            
            //5、建立实际的连接 
            connection.connect();
            //获取所有响应头字段
            Map> map = connection.getHeaderFields();
            //遍历所有的响应头字段
            for(String key : map.keySet()) {
                System.out.println(key + "---->" + map.get(key));
            }
            
            //6、定义BufferedReader输入流来读取URL的响应内容 ,UTF-8是后续自己加的设置编码格式,也可以去掉这个参数
            bufferedReader = new BufferedReader(new InputStreamReader(connection.getInputStream(),"UTF-8"));
            String line = "";
            while(null != (line = bufferedReader.readLine())) {
                result += line;
            }
//            int tmp;
//            while((tmp = bufferedReader.read()) != -1){
//                result += (char)tmp;
//            }
            
        }catch (Exception e) {
            // TODO: handle exception
            System.out.println("发送GET请求出现异常!!!"  + e);
            e.printStackTrace();
        }finally {        //使用finally块来关闭输入流 
            try {
                if(null != bufferedReader) {
                    bufferedReader.close();
                }
            }catch (Exception e2) {
                // TODO: handle exception
                e2.printStackTrace();
            }
        }
        return result;
    }
    /**
     * 向指定的URL发送POST方法的请求
     * @param url    发送请求的URL
     * @param param  请求参数,请求参数应该是 name1=value1&name2=value2 的形式 
     * @return       远程资源的响应结果 
     */
    public static String sendPost(String url, String param) {
        String result = "";
        BufferedReader bufferedReader = null;
        PrintWriter out = null;
        try {
            //1、2、读取并将url转变为URL类对象
            URL realUrl = new URL(url);
            
            //3、打开和URL之间的连接
            URLConnection connection = realUrl.openConnection();
            //4、设置通用的请求属性
            connection.setRequestProperty("accept", "*/*");
            connection.setRequestProperty("connection", "Keep-Alive");
            connection.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
        
            // 发送POST请求必须设置如下两行  
            connection.setDoInput(true);
            connection.setDoOutput(true);
            
            //5、建立实际的连接
            //connection.connect();
            //获取URLConnection对象对应的输出流
            out = new PrintWriter(connection.getOutputStream());
            //发送请求参数
            out.print(param);
            //flush输出流的缓冲
            out.flush();
            //
            
            //6、定义BufferedReader输入流来读取URL的响应内容
            bufferedReader = new BufferedReader(new InputStreamReader(connection.getInputStream(),"UTF-8"));
            String line;
            while(null != (line = bufferedReader.readLine())) {
                result += line;
            }
        }catch (Exception e) {
            // TODO: handle exception
            System.out.println("发送POST请求出现异常!!!"  + e);
            e.printStackTrace();
        }finally {        //使用finally块来关闭输出流、输入流 
            try {
                if(null != out) {
                    out.close();
                }
                if(null != bufferedReader) {
                    bufferedReader.close();
                }
            }catch (Exception e2) {
                // TODO: handle exception
                e2.printStackTrace();
            }
        }
        return result;
    }
}

 

测试:

 

package com.bs.utils;

import java.util.Timer;

public class Test {
    public static void main(String[] args) {
        
         //发送 GET 请求
        String str1=BackEndHttpRequest.sendGet("http://localhost:8080/showWaterregion", "page=1&rows=5®ionID=4");
        System.out.println(str1);
        
        //发送 POST 请求
        String str2=BackEndHttpRequest.sendPost("http://localhost:8080/waterregion/flow/year", "type=1®ionID=2");
     System.out.println(str2);
} }

 

postman请求数据

get请求的结果此处略;

post请求的结果:

java后台发送请求获取数据,并解析json数据_第1张图片

 

 

 

进行解析请求回的json数据:

依赖jar包:

 fastjson-1.2.47.jar

   <dependency>
         <groupId>org.jsongroupId>
         <artifactId>jsonartifactId>
         <version>20160810version>
     dependency>

 

java后台发送请求获取数据,并解析json数据_第2张图片

 

 测试:

 

package com.bs.utils;

import java.util.Timer;

import org.json.JSONArray;
import org.json.JSONObject;

public class Test {
    public static void main(String[] args) {
         //发送 GET 请求
        String str1=BackEndHttpRequest.sendGet("http://localhost:8080/showWaterregion", "page=1&rows=5®ionID=4");
        System.out.println(str1);
        
        //发送 POST 请求
        String str2=BackEndHttpRequest.sendPost("http://localhost:8080/waterregion/flow/year", "type=1®ionID=2");
        
        System.out.println("get请求json数据-----------------"+str1);
        
        JSONObject getjson = new JSONObject(str1);                //创建json对象(Json数据)
        System.out.println(getjson.get("total"));
        JSONArray getarray = getjson.getJSONArray("rows");        //获取json中的数组(数组名)
        for (int i = 0; i < getarray.length(); i++) {            //遍历数组
            JSONObject sonObject = getarray.getJSONObject(i);    //获得数组中的第一个对象
            System.out.println(sonObject.get("id"));            //根据字段名获得对象的每一个属性字段
            System.out.println(sonObject.get("name"));
            System.out.println(sonObject.get("readtime"));
        }
        
        
        System.out.println("post请求json数据-----------------"+str2);
        
        JSONObject json = new JSONObject(str2);
        System.out.println(json.get("status"));
        System.out.println(json.get("msg"));
        JSONArray jsonArray = json.getJSONArray("data");
        System.out.println(jsonArray);
        for (int i = 0; i < jsonArray.length(); i++) {
            JSONObject sonObject = jsonArray.getJSONObject(i);
            String s = (String) sonObject.get("time");
            Double bigDecimal = (Double) sonObject.get("flow");
            System.out.println(s);
            System.out.println(bigDecimal);
        }
    }
}

 

转载于:https://www.cnblogs.com/Moming0/p/10677940.html

你可能感兴趣的:(java后台发送请求获取数据,并解析json数据)