[工具类]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; } } }
相关文章推荐
- 使用org.apache.commons.httpclient.util.DateUtil工具类解析时间减少一天
- 170314、工具:apache httpClient多线程并发情况下安全实用及工具类分享
- HttpClientUtil工具类
- 常用工具类之HttpclientUtil
- 【HttpClientUtil完整的工具类】
- 【Hutool】Hutool工具类之Http工具——HttpUtil
- HttpClientProxyUtil HTTPClient请求工具类源码
- HttpClientUtil工具类
- C# HttpClientUtil 工具类 表单请求提交 附件上传下载
- 使用jsoup和httpclient编写的简单爬虫工具
- HttpClientUtil工具类
- HttpClientUtil(HttpClient工具类)
- java http HttpClientUtil 工具类
- HttpClientUtil请求http地址的工具类
- 利用httpclient开源工具抓取网页的源码,并且控制台打印出来工具类的编写
- 简单的Httpserver,Httpclient,xml
- 简单实现Http代理工具
- 简单实现Http代理工具--端口复用与QQ代理
- 用C语言实现一个简单的HTTP客户端(HTTP Client)
- 使用 Apache HttpClient 工具模拟百度蜘蛛或浏览器抓取和解压gzip网页