【工具】java发送GET、POST请求


  前项目使用这种HTTP的方式进行数据交互,目前已更换数据交互方式,但是作为接口提供调用来说还是比较简洁高效的:

  总体流程就是:

  1、发送HTTP请求

  2、获取返回的JSON对象

  3、JSON转换

package com.xx;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
import java.util.List;
import java.util.Map;


public class SendGetPost {

	/**
	 * 发送get请求
	 * 参数设置:?param=val¶m2=val2
	 * @author TF
	 *
	 */
	public static String sendGet(String url){
	String result = "";
	BufferedReader in = null;
	try {
		//创建URL对象、
		URL urlGet =new URL(url);
		//打开URL连接
		URLConnection connection = urlGet.openConnection();
		//设置请求头信息
		connection.setRequestProperty("accept", "*/*");
	        connection.setRequestProperty("connection", "Keep-Alive");
	        connection.setRequestProperty("user-agent","Mozilla/5.0 (Windows NT 6.1; WOW64; rv:47.0) Gecko/20100101 Firefox/47.0");
	        connection.setRequestProperty("contentType", "UTF-8");
	        //建立连接
	        connection.connect();
	        // 获取所有响应头字段
	        Map<String, List<String>> map = connection.getHeaderFields();
	        // 定义 BufferedReader输入流来读取URL的响应
	        in = new BufferedReader(new InputStreamReader(connection.getInputStream(),"UTF-8"));
	        String line;
                while ((line = in.readLine()) != null) {
            	    result += line;
                }
	} catch (MalformedURLException e) {
			e.printStackTrace();
	} catch (IOException e) {
			e.printStackTrace();
	}
		
		return result;
	}
	/**
	 * 发送post请求
	 * 参数设置param1=val1&m2=val2
	 * 
	 * */
	public static String sendPost(String url,String param){
		String result = "";
	    BufferedReader in = null;
	    OutputStreamWriter out = null;
		try {
			//创建URL对象、
			URL urlPost = new URL(url);
			//打开URL连接
			URLConnection connection = urlPost.openConnection();
			HttpURLConnection conn = (HttpURLConnection) connection;
			 // 设置通用的请求属性
	          conn.setRequestProperty("accept", "*/*");
	          conn.setRequestProperty("connection", "Keep-Alive");
	          conn.setRequestProperty("user-agent","Mozilla/5.0 (Windows NT 6.1; WOW64; rv:47.0) Gecko/20100101 Firefox/47.0");
	          conn.setRequestMethod("POST");
	          // 发送POST请求必须设置如下两行
	          conn.setDoOutput(true);
	          conn.setDoInput(true);
	          // 获取URLConnection对象对应的输出流
	          out = new OutputStreamWriter(conn.getOutputStream(),"UTF-8");
	          // 发送请求参数
	          out.write(param);
	          // flush输出流的缓冲
	          out.flush();
	          // 定义BufferedReader输入流来读取URL的响应
	          in = new BufferedReader(
	                  new InputStreamReader(conn.getInputStream(),"UTF-8"));
	          String line;
	          while ((line = in.readLine()) != null) {
	              result += line;
	          }
		} catch (MalformedURLException e) {
			System.out.println("error");
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
		
		return result;
	}
}



 
原文地址:https://www.cnblogs.com/the-fool/p/11054217.html