您的位置:首页 > 理论基础 > 计算机网络

HttpProxyUtil HTTP请求工具类源码

2016-06-29 15:05 393 查看
查看原文:http://www.ibloger.net/article/124.html

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();
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: