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

java发送http请求获取响应结果【工具包系列】

2017-06-27 09:19 337 查看
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;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Java http
相关文章推荐