zoukankan      html  css  js  c++  java
  • java后台发送请求并获取返回值

    项目中需要前端发送请求给后端,而后端需要从另一个平台中取数据然后再透传给前端,通过下述代码将其实现.在此记录一下.

    package com.autotest.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<String, List<String>> 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;
    	}
    }

    调用方法:

        public static void main(String[] args) {
            //发送 GET 请求
            String str1=BackEndHttpRequest.sendGet("http://localhost/services/getallcase/", "key=123&v=456");
            System.out.println(str1);
            
            //发送 POST 请求
            String str2=BackEndHttpRequest.sendPost("http://localhost/services/getallcase/", "key=123&v=456");
            System.out.println(str2);
        }
  • 相关阅读:
    SDOI2020游记
    Git和GitHub详解
    P1251 餐巾计划问题
    P2824 [HEOI2016/TJOI2016]排序
    P3224 [HNOI2012]永无乡
    P3605 [USACO17JAN]Promotion Counting晋升者计数
    P4314 CPU监控
    P2939 [USACO09FEB]改造路Revamping Trails
    P4254 [JSOI2008]Blue Mary开公司
    P1772 [ZJOI2006]物流运输
  • 原文地址:https://www.cnblogs.com/zhangwuji/p/8270693.html
Copyright © 2011-2022 走看看