HTTP请求工具类
2016-07-04 15:57
639 查看
/** * HTTP请求工具类 */ public class HttpClient { private final static Logger LOGGER = Logger.getLogger(MyHttpRequest.class); /** * 向指定URL发送GET方法的请求 * * @param url * 发送请求的URL * @param param * 请求参数,请求参数应该是 name1=value1&name2=value2 的形式。 * @return URL 所代表远程资源的响应结果 */ public static String sendGet(String url, String param) { LOGGER.info("get: " + url); LOGGER.info("param: " + param); String result = ""; BufferedReader in = null; try { String urlNameString = url + "?" + param; URL realUrl = new URL(urlNameString); // 打开和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.connect(); // 获取所有响应头字段 Map<String, List<String>> map = connection.getHeaderFields(); // 遍历所有的响应头字段 // for (String key : map.keySet()) { // LOGGER.info(key + "--->" + map.get(key)); // } // 定义 BufferedReader输入流来读取URL的响应 in = new BufferedReader(new InputStreamReader(connection.getInputStream(), "utf-8")); String line; while ((line = in.readLine()) != null) { result += line; } } catch (Exception e) { LOGGER.info("发送GET请求出现异常!" + e); e.printStackTrace(); } finally { try { if (in != null) { in.close(); } } catch (Exception e2) { e2.printStackTrace(); } } LOGGER.info("result: " + result); return result; } /** * 向指定 URL 发送POST方法的请求 * * @param url * 发送请求的 URL * @param param * 请求参数,请求参数应该是 name1=value1&name2=value2 的形式。 * @return 所代表远程资源的响应结果 */ public static String sendPost(String url, String param) { LOGGER.info("post: " + url); LOGGER.info("param: " + param); PrintWriter out = null; BufferedReader in = null; String result = ""; 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)"); // 发送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 += line; } } catch (Exception e) { LOGGER.error("发送 POST请求异常", e); } finally { try { if (out != null) { out.close(); } if (in != null) { in.close(); } } catch (IOException ex) { ex.printStackTrace(); } } LOGGER.info("result: " + result); return result; } /** * 向指定 URL 发送POST方法的请求 * * @param url * 发送请求的 URL * @param param * 请求参数,请求参数应该是 name1=value1&name2=value2 的形式。 * @return 所代表远程资源的响应结果 */ public static String sendPost(String url, String param, Integer connectTimeOut, Integer readTimeOut) { LOGGER.info("post: " + url); LOGGER.info("param: " + param); LOGGER.info("connectTimeOut: " + connectTimeOut); LOGGER.info("readTimeOut: " + readTimeOut); PrintWriter out = null; BufferedReader in = null; String result = ""; 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.setConnectTimeout(connectTimeOut); conn.setReadTimeout(readTimeOut); // 发送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(), "utf-8")); String line; while ((line = in.readLine()) != null) { result += line; } } catch (Exception e) { LOGGER.error("发送 POST请求异常", e); } finally { try { if (out != null) { out.close(); } if (in != null) { in.close(); } } catch (IOException ex) { ex.printStackTrace(); } } LOGGER.info("result: " + result); return result; } public static void main(String[] args) { } }
相关文章推荐
- HTTP请求返回状态码详解
- 网络编程(二)
- 读书笔记-java网络编程-4Internet地址-地址简述
- Win7下虚拟机上Linux(CentOS 64)网络配置
- 读书笔记-java网络编程-3线程-线程池和Executor
- CNN 卷积神经网络 代码实例+图
- 从tcp原理角度理解Broken pipe和Connection reset by peer的区别
- hongyang okhttp-utils 上传json
- 虚拟机上rad hat网络相关设置
- VxWorks网络协议栈的MUX接口
- APN APN指一种网络接入技术,是通过手机上网时必须配置的一个参数,它决定了手机通过哪种接入方式来访问网络。
- xUtils3.0版本的发送同步网络请求的方式
- xmlns:android="http://schemas.android.com/apk/res/android的作用
- 聊聊HTTPS和SSL/TLS协议
- 为阿里云站点部署免费 HTTPS
- 端口状态说明
- 为了部落:NVMe over Fabric诞生记
- Android之使用HTTP协议访问网络
- 用 CocoaHttpServer 实现 https 服务
- 欧洲杯让网络彩票“死灰复燃”:多个方式打政策擦边球