天天看點

HTTP用戶端工具使用jdk原生URLConnection發送Post請求和Get請求的HTTP用戶端工具

使用jdk原生URLConnection發送Post請求和Get請求的HTTP用戶端工具

package com.douyin.util;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.URL;
import java.net.URLConnection;

/**
 * HTTP用戶端工具
 *
 */
public class HttpClientUtil {
	/**
	 * 發送Get請求
	 * 
	 * @param url
	 *            發送請求的URL
	 * @param param
	 *            請求參數,請求參數應該是name1=value1&name2=value2的形式。
	 * @return URL所代表遠端資源的響應
	 */
	public static String sendGet(String url, String param) {
		String result = "";
		BufferedReader in = null;
		try {
			String urlName = url + "?" + param;
			URL realUrl = new URL(urlName);
			// 打開和URL之間的連接配接
			URLConnection conn = realUrl.openConnection();
			// 設定通用的請求屬性
			conn.setRequestProperty("accept", "*/*");
			conn.setRequestProperty("connection", "Keep-Alive");
			conn.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)");
			// 建立實際的連接配接
			conn.connect();
			// 擷取所有響應頭字段
			// Map<String, List<String>> map = conn.getHeaderFields();
			// 定義BufferedReader輸入流來讀取URL的響應
			in = new BufferedReader(new InputStreamReader(conn.getInputStream()));
			String line;
			while ((line = in.readLine()) != null) {
				result += "\n" + line;
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
		// 使用finally塊來關閉輸入流
		finally {
			try {
				if (in != null) {
					in.close();
				}
			} catch (IOException ex) {
				ex.printStackTrace();
			}
		}
		return result;
	}

	/**
	 * 發送POST請求
	 * 
	 * @param url
	 *            發送請求的URL
	 * @param param
	 *            請求參數,請求參數應該是name1=value1&name2=value2的形式。
	 * @return URL所代表遠端資源的響應
	 */
	public static String sendPost(String url, String param) {
		PrintWriter out = null;
		BufferedReader in = null;
		String result = "";
		try {
			URL realUrl = new URL(url);
			// 打開和URL之間的連接配接
			URLConnection conn = realUrl.openConnection();
			// 設定cookie
			// conn.setRequestProperty("cookie", "");
			// 設定通用的請求屬性
			conn.setRequestProperty("accept", "*/*");
			conn.setRequestProperty("connection", "Keep-Alive");
			conn.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)");
			// 發送POST請求必須設定如下兩行
			conn.setDoOutput(true);
			conn.setDoInput(true);
			// 擷取URLConnection對象對應的輸出流
			out = new PrintWriter(conn.getOutputStream());
			// 發送請求參數
			out.print(param);
			// flush輸出流的緩沖
			out.flush();
			// 定義BufferedReader輸入流來讀取URL的響應
			in = new BufferedReader(new InputStreamReader(conn.getInputStream()));
			String line;
			while ((line = in.readLine()) != null) {
				result += "\n" + line;
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
		// 使用finally塊來關閉輸出流、輸入流
		finally {
			try {
				if (out != null) {
					out.close();
				}
				if (in != null) {
					in.close();
				}
			} catch (IOException ex) {
				ex.printStackTrace();
			}
		}
		return result;
	}
}
           

繼續閱讀