HttpProxyUtil HTTP请求工具类源码
2016-06-29 15:05
393 查看
查看原文:http://www.ibloger.net/article/124.html
HttpProxyUtil HTTP请求工具类源码
HttpProxyUtil HTTP请求工具类源码
package com.chinatelecom.web.trade.utils; import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.PrintWriter; import java.net.URL; import java.net.URLConnection; import org.apache.log4j.Logger; /** * HTTP请求代理类 * * @author X-rapido * @description 发送Get Post请求 */ public class HttpProxyUtil { private static Logger logger = Logger.getLogger(HttpProxyUtil.class); /** * 使用URLConnection进行GET请求 * @param api_url * @return */ public static String sendGet(String api_url) { return sendGet(api_url, "", "utf-8"); } /** * 使用URLConnection进行GET请求 * @param api_url * @param param * @return */ public static String sendGet(String api_url, String param) { return sendGet(api_url, param, "utf-8"); } /** * 使用URLConnection进行GET请求 * @param api_url 请求路径 * @param param 请求格式有name1=value1&name2=value2、json、xml、map或其他形式,具体要看接收方的取值, 可以为空 * @param charset 字符集 * @return */ public static String sendGet(String api_url, String param, String charset) { StringBuffer buffer = new StringBuffer(); try { // 判断有无参数,若是拼接好的url,就不必再拼接了 if(param!=null && !"".equals(param)){ api_url = api_url + "?" + param; } logger.info("请求的路径是:" + api_url); URL realUrl = new URL(api_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(12000); //设置连接主机超时(单位:毫秒) conn.setReadTimeout(12000); // 设置从主机读取数据超时(单位:毫秒) conn.connect(); // 建立实际的联接 // 定义 BufferedReader输入流来读取URL的相应 try (BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream(), charset))) { String line; while ((line = in.readLine()) != null) { // buffer.append("\n"+line); buffer.append(line); } } } catch (Exception e) { logger.error("发送GET请求出现异常! " + e.getMessage()); e.printStackTrace(); } logger.info("响应返回数据:" + buffer.toString()); return buffer.toString(); } /** * 使用URLConnection进行POST请求 * @param api_url 请求路径 * @param param 请求格式有name1=value1&name2=value2、json、xml、map或其他形式,具体要看接收方的取值,最好不为空 * @return */ public static String sendPost(String api_url, String param) { return sendPost(api_url, param , "utf-8"); } /** * 使用URLConnection进行POST请求 * @param api_url 请求路径 * @param param 请求格式有name1=value1&name2=value2、json、xml、map或其他形式,具体要看接收方的取值,最好不为空 * @param charset 字符集 * @return */ public static String sendPost(String api_url, String param, String charset) { StringBuffer buffer = new StringBuffer(); try { logger.info("请求的路径是:"+ api_url+",参数是:" + param); URL realUrl = new URL(api_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(12000); //设置连接主机超时(单位:毫秒) conn.setReadTimeout(12000); // 设置从主机读取数据超时(单位:毫秒) // 发送POST请求必须设置如下两行 conn.setDoOutput(true); conn.setDoInput(true); // 获取URLConnection对象对应的输出流 try (PrintWriter out = new PrintWriter(conn.getOutputStream())) { out.print(param); // 发送请求参数 out.flush();// flush输出流的缓冲 } // 定义 BufferedReader输入流来读取URL的相应,得指明使用UTF-8编码,否则到API服务器XML的中文不能被成功识别 try (BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream(), charset))) { String line; while ((line = in.readLine()) != null) { // buffer.append("\n"+line); buffer.append(line); } } } catch (Exception e) { logger.error("发送POST请求出现异常! " + e.getMessage()); e.printStackTrace(); } logger.info("响应返回数据:" + buffer.toString()); return buffer.toString(); } }
相关文章推荐
- android 加载网络数据(2)图片
- network interface card 网络接口卡
- 互联网开发2-HTTPS通信原理
- Swift网络封装库Moya中文手册之RxSwift
- libevent学习笔记 - 0 Preliminaries
- java网络编程:RandomAccessFile, URLConnection和多线程机制实现了Http下载
- 获取网络图片,并保存到本地
- 传智播客网络营销课程大升级,改变从“薪”开始
- 经典的BPN带动量的误差反向传播神经网络类代码示例
- java网络编程: UDP 广播与多播的实现
- node.js http
- AutoCAD单机版、网络版授权方法
- java网络编程:MulticastSocket类
- R-FCN:基于区域的全卷积网络来检测物体
- java网络编程:DatagramSocket类简单实现文件下载
- java网络编程:DatagramSocket类
- Swift网络封装库Moya中文手册之Targets
- HTTP状态码及其含义
- Unity判断网络是否连接 以及 判断是否连接WiFi
- 使用自定义签名的https的ssl安全问题解决和metro的webservice调用