java代码实现访问网络外部接口并获取数据的工具类详解编程语言

java代码实现访问网络外部接口并获取数据的工具类

工具类代码,可以直接copy使用

package com.yqzj.util; 
 
 
import org.apache.log4j.LogManager; 
import org.apache.log4j.Logger; 
 
import java.io.BufferedInputStream; 
import java.io.BufferedOutputStream; 
import java.io.BufferedReader; 
import java.io.IOException; 
import java.io.InputStreamReader; 
import java.io.PrintWriter; 
import java.net.URL; 
import java.net.URLConnection; 
 
public class HttpRequestUtil { 
	 
	/** 日志 */ 
	private static Logger log = LogManager.getLogger(HttpRequestUtil.class); 
 
	/** 
	 * 向指定URL发送GET方法的请求 
	 * 请求参数,请求参数应该是 name1=value1&name2=value2 的形式。 
	 * @param url 
	 *            发送请求的URL 
	 * @return URL 所代表远程资源的响应结果 
	 */ 
	public static String sendGet(String url) { 
		StringBuilder result = new StringBuilder(); 
		BufferedReader in = null; 
		try { 
			URL realUrl = new URL(url); 
			// 打开和URL之间的连接 
			URLConnection connection = realUrl.openConnection(); 
			// 设置通用的请求属性 
			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("Accept-Charset", "UTF-8"); 
			connection.setRequestProperty("contentType", "UTF-8"); 
			// 建立实际的连接 
			connection.connect(); 
			// 遍历所有的响应头字段 
			// for (String key : map.keySet()) { 
			// System.out.println(key + "--->" + map.get(key)); 
			// } 
			// 定义 BufferedReader输入流来读取URL的响应 
			in = new BufferedReader(new InputStreamReader( 
					connection.getInputStream(), "utf-8")); 
			String line; 
			while ((line = in.readLine()) != null) { 
				result.append(line); 
			} 
		} catch (Exception e) { 
//			System.out.println("发送GET请求出现异常!" + e); 
			result = new StringBuilder("{/"resCode/":/"1/",/"errCode/":/"1001/",/"resData/":/"/"}"); 
			e.printStackTrace(); 
			log.error("远程服务未开启", e); 
		} 
		// 使用finally块来关闭输入流 
		finally { 
			try { 
				if (in != null) { 
					in.close(); 
				} 
			} catch (Exception e2) { 
				e2.printStackTrace(); 
			} 
		} 
 
		return result.toString(); 
	} 
 
	/** 
	 * 向指定 URL 发送POST方法的请求 
	 *  
	 * @param url 
	 *            发送请求的 URL 
	 * @param param 
	 *            请求参数,请求参数应该是 name1=value1&name2=value2 的形式。 
	 * @return 所代表远程资源的响应结果 
	 */ 
	public static String sendPost(String url, String param) { 
 
		PrintWriter out = null; 
		BufferedReader in = null; 
		StringBuilder result = new StringBuilder(); 
		try { 
			URL realUrl = new URL(url); 
			// 打开和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.setRequestProperty("Accept-Charset", "UTF-8"); 
			conn.setRequestProperty("contentType", "UTF-8"); 
			// 发送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.append(line); 
			} 
		} catch (Exception e) { 
//			System.out.println("发送 POST 请求出现异常!" + e); 
			result = new StringBuilder("{/"resCode/":/"1/",/"errCode/":/"1001/",/"resData/":/"/"}"); 
			e.printStackTrace(); 
			log.error("远程服务未开启", e); 
		} 
		// 使用finally块来关闭输出流、输入流 
		finally { 
			try { 
				if (out != null) { 
					out.close(); 
				} 
				if (in != null) { 
					in.close(); 
				} 
			} catch (IOException ex) { 
				ex.printStackTrace(); 
			} 
		} 
 
		return result.toString(); 
	} 
 
	/** 
	 * 向指定 URL 发送POST方法的请求 
	 *  
	 * @param url 
	 *            发送请求的 URL 
	 * @param param 
	 *            请求参数,请求参数应该是 name1=value1&name2=value2 的形式。 
	 * @return 所代表远程资源的响应结果 
	 */ 
	public static String sendFile(String url, String param, 
			BufferedInputStream bInputStream) { 
 
		BufferedOutputStream out = null; 
		BufferedReader in = null; 
		StringBuilder result = new StringBuilder(); 
		try { 
			URL realUrl = new URL(url); 
			// 打开和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.setRequestProperty("Accept-Charset", "UTF-8"); 
			conn.setRequestProperty("contentType", "multipart/form-data"); 
 
			// 发送POST请求必须设置如下两行 
			conn.setDoOutput(true); 
			conn.setDoInput(true); 
			// 发送参数 
			StringBuffer sb = new StringBuffer(); 
			sb = sb.append(param); 
			byte[] paramData = sb.toString().getBytes(); 
//			System.out.println(paramData.length); 
			 
			out = new BufferedOutputStream(conn.getOutputStream()); 
			out.write(paramData); 
			 
			if (bInputStream != null) { 
				byte[] data = new byte[2048]; 
				while (bInputStream.read(data) != -1) { 
					out.write(data); 
				} 
			} 
			 
			out.flush(); 
			// flush输出流的缓冲 
			// 定义BufferedReader输入流来读取URL的响应 
			in = new BufferedReader( 
					new InputStreamReader(conn.getInputStream())); 
			String line; 
			while ((line = in.readLine()) != null) { 
				result.append(line); 
			} 
		} catch (Exception e) { 
//			System.out.println("发送 POST 请求出现异常!" + e); 
			result = new StringBuilder("{/"resCode/":/"1/",/"errCode/":/"1001/",/"resData/":/"/"}"); 
			e.printStackTrace(); 
		} 
		// 使用finally块来关闭输出流、输入流 
		finally { 
			try { 
				if (out != null) { 
					out.close(); 
				} 
				if (in != null) { 
					in.close(); 
				} 
				if (bInputStream != null) { 
					bInputStream.close(); 
				} 
			} catch (IOException ex) { 
				ex.printStackTrace(); 
			} 
		} 
 
		return result.toString(); 
	} 
}

原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/13894.html

(0)
上一篇 2021年7月19日
下一篇 2021年7月19日

相关推荐

发表回复

登录后才能评论