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);
        }
  • 相关阅读:
    HDU 1025 Constructing Roads In JGShining's Kingdom (DP+二分)
    HDU 1158 Employment Planning
    HDU 2059 龟兔赛跑
    Csharp 简单操作Word模板文件
    Csharp windowform datagridview Clipboard TO EXCEL OR FROM EXCEL DATA 保存datagridview所有數據
    Csharp 讀寫文件內容搜索自動彈出 AutoCompleteMode
    Csharp windowform controls clear
    CSS DIV大图片右上角叠加小图片
    Csharp DataGridView自定义添加DateTimePicker控件日期列
    Csharp 打印Word文件默認打印機或選擇打印機設置代碼
  • 原文地址:https://www.cnblogs.com/zhangwuji/p/8270693.html
Copyright © 2011-2022 走看看