import org.apache.commons.httpclient.HttpException;
import org.apache.commons.httpclient.NameValuePair;
import org.apache.log4j.Logger;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.URL;
import java.net.URLConnection;
import java.util.Map;
/**
* ClassName: HttpRequestSender
* @version
* @since JDK 1.7
*/
public class HttpRequestSender {
private static Logger logger = Logger.getLogger(HttpRequestSender.class);
public static HttpResponse sendGet(String url, String queryString){
if(url == null || url.equals("")){
return null;
}
HttpRequest request = new HttpRequest(HttpResultType.STRING);
request.setUrl(url);
request.setMethod(HttpRequest.METHOD_GET);
if(queryString != null && !queryString.equals("")){
request.setQueryString(queryString);
}
HttpProtocolHandler httpProtocolHandler = HttpProtocolHandler.getInstance();
try {
HttpResponse httpResponse = httpProtocolHandler.execute(request, "", "");
return httpResponse;
} catch (HttpException e) {
logger.error("Fail with send GET request: ", e);
} catch (IOException e) {
logger.error("Fail with send GET request: ", e);
} catch (Exception e){
logger.error("Fail with send GET request: ", e);
}
return null;
}
public static HttpResponse sendPost(String url, NameValuePair[] nvp){
if(url == null || url.equals("")){
return null;
}
HttpRequest request = new HttpRequest(HttpResultType.STRING);
request.setUrl(url);
request.setMethod(HttpRequest.METHOD_POST);
if(nvp != null){
request.setParameters(nvp);
}
HttpProtocolHandler httpProtocolHandler = HttpProtocolHandler.getInstance();
try {
HttpResponse httpResponse = httpProtocolHandler.execute(request, "", "");
return httpResponse;
} catch (HttpException e) {
logger.error("Fail with send POST request: ", e);
} catch (IOException e) {
logger.error("Fail with send POST request: ", e);
} catch (Exception e){
logger.error("Fail with send POST request: ", e);
}
return null;
}
public static HttpResponse sendPost(String url, NameValuePair[] nvp, String fileNameParam,
String fileNamePath){
if(url == null || url.equals(""))
return null;
HttpRequest request = new HttpRequest(HttpResultType.STRING);
request.setUrl(url);
request.setMethod(HttpRequest.METHOD_POST);
if(nvp != null)
request.setParameters(nvp);
HttpProtocolHandler httpProtocolHandler = HttpProtocolHandler.getInstance();
try {
HttpResponse httpResponse = httpProtocolHandler.execute(request, fileNameParam, fileNamePath);
return httpResponse;
} catch (HttpException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (Exception e){
e.printStackTrace();
}
return null;
}
public static HttpResponse sendPost(String url, Map<String, String> map){
NameValuePair[] nvpArray = null;
if(map != null && map.size() > 0){
nvpArray = new NameValuePair[map.size()];
int i = 0;
for(String key : map.keySet()){
NameValuePair nvp = new NameValuePair(key, map.get(key));
nvpArray[i++] = nvp;
}
}
return sendPost(url, nvpArray);
}
public static String sendPost(String url, String param) throws Exception{
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(),"UTF-8"));
String line;
while ((line = in.readLine()) != null) {
result += line;
}
} catch (Exception e) {
logger.error(e.getMessage(), e);
throw e;
}
// 使用finally块来关闭输出流、输入流
finally {
try {
if (out != null) {
out.close();
}
if (in != null) {
in.close();
}
} catch (IOException ex) {
logger.error(ex.getMessage(), ex);
throw ex;
}
}
return result;
}
/**
* 向指定URL发送GET方法的请求
*
* @param url
* 发送请求的URL
* @param param
* 请求参数,请求参数应该是 name1=value1&name2=value2 的形式。
* @return URL 所代表远程资源的响应结果
*/
public static String sendGetReuqest(String url, String param) throws Exception{
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();
// 定义 BufferedReader输入流来读取URL的响应
in = new BufferedReader(new InputStreamReader(
connection.getInputStream(),"UTF-8"));
String line;
while ((line = in.readLine()) != null) {
result += line;
}
} catch (Exception e) {
logger.error(e.getMessage(), e);
throw e;
}
// 使用finally块来关闭输入流
finally {
try {
if (in != null) {
in.close();
}
} catch (Exception e2) {
logger.error(e2.getMessage(), e2);
throw e2;
}
}
return result;
}
}