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

[工具类]HttpClientUtil简单工具

2016-09-17 16:21 549 查看

[工具类]HttpClientUtil简单工具

简单的封装了POST、GET、上传、下载功能

maven引用的jar包

<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.5.2</version>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient-cache</artifactId>
<version>4.5.2</version>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpmime</artifactId>
<version>4.5.2</version>
</dependency>


代码片

package cc.yihy.jsoup.utils;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;

import javax.crypto.EncryptedPrivateKeyInfo;

import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.methods.GetMethod;
import org.apache.http.Header;
import org.apache.http.HttpEntity;
import org.apache.http.HttpHeaders;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.ParseException;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.client.methods.HttpRequestBase;
import org.apache.http.entity.ContentType;
import org.apache.http.entity.mime.MultipartEntityBuilder;
import org.apache.http.entity.mime.content.FileBody;
import org.apache.http.entity.mime.content.StringBody;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.util.EntityUtils;

public class HttpClientUtil {

private static String DEFCHARSET = "gb2312";
private static Header[] cookies;
// private Cookie cookie;
private static String cookie;

/**
* 发送 post请求访问本地应用并根据传递参数不同返回不同结果
*/
public static String post(String url, Map<String, String> params,
String referer) {
// 创建默认的httpClient实例.
CloseableHttpClient httpclient = HttpClients.createDefault();
// 创建httppost
String result = "";
HttpPost httppost = new HttpPost(url);

setCookie(httppost);

httppost.addHeader(HttpHeaders.REFERER, referer);
// 创建参数队列
List<NameValuePair> formparams = new ArrayList<NameValuePair>();
if (params != null && !params.isEmpty()) {
Set<Entry<String, String>> entrySet = params.entrySet();

for (Entry<String, String> entry : entrySet) {
formparams.add(new BasicNameValuePair(entry.getKey(), entry
.getValue()));
}
}
UrlEncodedFormEntity uefEntity;
try {
uefEntity = new UrlEncodedFormEntity(formparams, DEFCHARSET);
httppost.setEntity(uefEntity);

CloseableHttpResponse response = httpclient.execute(httppost);
try {

getCookie(response);

HttpEntity entity = response.getEntity();
if (entity != null) {
result = EntityUtils.toString(entity, "utf-8");
}
} finally {
response.close();
}
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (UnsupportedEncodingException e1) {
e1.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
// 关闭连接,释放资源
tr
c3f4
y {
httpclient.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return result;
}

/**
* 发送 get请求
*
* @return
*/
public static String get(String url, String referer) {
String result = "";
CloseableHttpClient httpclient = HttpClients.createDefault();
try {
// 创建httpget
HttpGet httpget = new HttpGet(url);

// 设置cookie
setCookie(httpget);

httpget.addHeader(HttpHeaders.REFERER, referer);
httpget.addHeader(HttpHeaders.HOST, "www.waduanzi.com");

// 执行get请求.
CloseableHttpResponse response = httpclient.execute(httpget);
try {
getCookie(response);
// 获取响应实体
HttpEntity entity = response.getEntity();
if (entity != null) {

result = EntityUtils.toString(entity, DEFCHARSET);
}
} finally {
response.close();
}
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (ParseException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
// 关闭连接,释放资源
try {
httpclient.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return result;
}

/**
* 上传文件
* @param url  url
* @param fileList  文件列表,key是参数名
* @param paramList  参数列表
*/
public static void upload(String url, Map<String, File> fileList,
Map<String, String> paramList) {
CloseableHttpClient httpclient = HttpClients.createDefault();
try {
HttpPost httppost = new HttpPost(url);
setCookie(httppost);

MultipartEntityBuilder builder = MultipartEntityBuilder.create();
// 增加上传文件
for (Entry<String, File> entry : fileList.entrySet()) {
builder.addBinaryBody(entry.getKey(), entry.getValue());
}
// 增加参数
for (Entry<String, String> entry : paramList.entrySet()) {
builder.addPart(entry.getKey(), new StringBody(
entry.getValue(), ContentType.TEXT_PLAIN));
}
HttpEntity reqEntity = builder.build();

httppost.setEntity(reqEntity);

System.out
.println("executing request " + httppost.getRequestLine());
CloseableHttpResponse response = httpclient.execute(httppost);
try {
System.out.println("----------------------------------------");
System.out.println(response.getStatusLine());
HttpEntity resEntity = response.getEntity();
if (resEntity != null) {
System.out.println("Response content length: "
+ resEntity.getContentLength());
}
EntityUtils.consume(resEntity);
} finally {
response.close();
}
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
httpclient.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}

public static void download(String fileUrl, File file) throws Exception {

HttpClient client = new HttpClient();
GetMethod get = new GetMethod(fileUrl);
client.executeMethod(get);

FileOutputStream output = null;
try {
output = new FileOutputStream(file);
// 得到网络资源的字节数组,并写入文件
output.write(get.getResponseBody());
} catch (Exception e) {

e.printStackTrace();
} finally {
output.close();
}
}

private static void setCookie(HttpRequestBase http) {
if (cookie == null || "".equals(cookie)) {
if (cookies != null) {
cookie = new String();
for (Header cook : cookies) {
// System.out.println("读cookie"+cook.getValue());
cookie += cook.getValue() + ";";
}
}
}
System.out.println("设置cookie" + cookie);
http.addHeader("Cookie", cookie);

}

private static void getCookie(HttpResponse response) {

Header[] headers = response.getHeaders("Set-Cookie");
if (headers != null && headers.length > 0) {
cookies = headers;

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