代码

  1. import java.io.IOException;
  2. import java.io.UnsupportedEncodingException;
  3.  
  4. import org.apache.http.client.ClientProtocolException;
  5. import org.apache.http.client.config.CookieSpecs;
  6. import org.apache.http.client.config.RequestConfig;
  7. import org.apache.http.client.methods.CloseableHttpResponse;
  8. import org.apache.http.client.methods.HttpGet;
  9. import org.apache.http.impl.client.CloseableHttpClient;
  10. import org.apache.http.impl.client.HttpClients;
  11. import org.apache.http.util.EntityUtils;
  12. import org.slf4j.Logger;
  13. import org.slf4j.LoggerFactory;
  14.  
  15. public class MyHttpClientUtils {
  16.  
  17. private static Logger logger = LoggerFactory.getLogger(MyHttpClientUtils.class);
  18.  
  19. private static final int HTTPCLIENT_TIMEOUT = 5000;
  20.  
  21. public static Tuple2<Boolean,String> getPageByUrl(String pageUrl, String encode) throws UnsupportedEncodingException{
  22. logger.info("pageurl=" + pageUrl);
  23. String body = null;
  24. RequestConfig requestConfig = RequestConfig.custom()
  25. .setSocketTimeout(HTTPCLIENT_TIMEOUT) //socket超时
  26. .setConnectTimeout(HTTPCLIENT_TIMEOUT) //connect超时
  27. .build();
  28. CloseableHttpClient httpClient = HttpClients.custom()
  29. .setDefaultRequestConfig(requestConfig)
  30. .build();
  31. HttpGet httpGet = new HttpGet(pageUrl);
  32. try {
  33. CloseableHttpResponse response = httpClient.execute(httpGet);
  34. String statusCode = String.valueOf(response.getStatusLine().getStatusCode());
  35. logger.info("getStatusCode=" + response.getStatusLine().getStatusCode());
  36. if(response.getStatusLine().getStatusCode() != 200) {
  37. logger.info("返回码异常:" + response.getStatusLine().getStatusCode());
  38. return new Tuple2<Boolean, String>(false, null);
  39. }
  40. body = EntityUtils.toString(response.getEntity(), encode);
  41. // System.out.println("body=" + body);
  42. } catch (IOException e) {
  43. System.out.println("----------Connection timeout--------");
  44. // return ne
  45. }
  46. return new Tuple2<Boolean, String>(true, body);
  47. }
  48.  
  49. public static Tuple2<Boolean,byte[]> getPicByteArray(String picUrl) throws ClientProtocolException, IOException {
  50. logger.info("下载url=" + picUrl);
  51. RequestConfig globalConfig = RequestConfig.custom().setCookieSpec(CookieSpecs.STANDARD).setConnectionRequestTimeout(HTTPCLIENT_TIMEOUT).setConnectTimeout(HTTPCLIENT_TIMEOUT).build();
  52. CloseableHttpClient httpClient = HttpClients.custom().setDefaultRequestConfig(globalConfig).build();
  53. HttpGet httpGet = new HttpGet(picUrl);
  54. CloseableHttpResponse response = httpClient.execute(httpGet);
  55.  
  56. logger.info("返回的状态码:" + response.getStatusLine().getStatusCode());
  57. if(response.getStatusLine().getStatusCode() == 200) {
  58. byte[] bytes = EntityUtils.toByteArray(response.getEntity());
  59. return new Tuple2<>(true, bytes);
  60. }else{
  61. return new Tuple2<>(false, null);
  62. }
  63. }
  64. }
  1. package testGetpic;
  2.  
  3. import java.io.FileOutputStream;
  4. import java.io.IOException;
  5.  
  6. import org.apache.http.Header;
  7. import org.apache.http.client.config.CookieSpecs;
  8. import org.apache.http.client.config.RequestConfig;
  9. import org.apache.http.client.methods.CloseableHttpResponse;
  10. import org.apache.http.client.methods.HttpGet;
  11. import org.apache.http.impl.client.CloseableHttpClient;
  12. import org.apache.http.impl.client.HttpClients;
  13. import org.apache.http.util.EntityUtils;
  14.  
  15. public class TestPic2 {
  16.  
  17. public static void main(String[] args) throws IOException{
  18. RequestConfig globalConfig = RequestConfig.custom().setCookieSpec(CookieSpecs.STANDARD).setConnectionRequestTimeout(6000).setConnectTimeout(6000).build();
  19. CloseableHttpClient httpClient = HttpClients.custom().setDefaultRequestConfig(globalConfig).build();
  20. HttpGet httpGet = new HttpGet("http://xxxx.com/abc.jpg");
  21. CloseableHttpResponse response = httpClient.execute(httpGet);
  22. Header[] headerArray = response.getAllHeaders();
  23. for(Header h : headerArray) {
  24. System.out.println(h.getName());
  25. System.out.println(h.getValue());
  26. System.out.println("======");
  27. }
  28.  
  29. System.out.println("---------------");
  30.  
  31. System.out.println(response.getStatusLine().getStatusCode());
  32. if(response.getStatusLine().getStatusCode() == 200) {
  33.  
  34. // for(Header h :response.getAllHeaders()){
  35. // System.out.println(h.getElements().length);
  36. // for(HeaderElement he :h.getElements()){
  37. // System.out.println("pc=" + he.getParameterCount());
  38. // }
  39. // System.out.println( h.getName() );
  40. // System.out.println( h.getValue() );
  41. // }
  42.  
  43. byte[] b = EntityUtils.toByteArray(response.getEntity());
  44. FileOutputStream fos = new FileOutputStream("test2.jpg");
  45. fos.write(b);
  46. fos.close();
  47. }
  48.  
  49. }
  50.  
  51. }

使用httpclient下载 页面、图片的更多相关文章

  1. Android采用HttpClient下载图片

    在上一章中谈到Android采用HttpURLConnection下载图片,本章使用HttpClient下载图片 HttpURLConnection与HttpClient的差别: HttpClient ...

  2. 项目遇到的小问题(关于vue-cli中js点击事件不起作用和iconfont图片下载页面css样式乱的解答)

     第一个:关于vue-cli中js点击事件不起作用 在vue的methods方法queryBtnFun()中拼接html和click操作事件的时候,发现点击事件一起未起作用: 后来发现是DOM执行顺序 ...

  3. python 爬虫之requests爬取页面图片的url,并将图片下载到本地

    大家好我叫hardy 需求:爬取某个页面,并把该页面的图片下载到本地 思考: img标签一个有多少种类型的src值?四种:1.以http开头的网络链接.2.以“//”开头网络地址.3.以“/”开头绝对 ...

  4. C#获取网页的HTML码、下载网站图片、获取IP地址

    1.根据URL请求获取页面HTML代码 /// <summary> /// 获取网页的HTML码 /// </summary> /// <param name=" ...

  5. 批量下载网站图片的Python实用小工具

    定位 本文适合于熟悉Python编程且对互联网高清图片饶有兴趣的筒鞋.读完本文后,将学会如何使用Python库批量并发地抓取网页和下载图片资源.只要懂得如何安装Python库以及运行Python程序, ...

  6. [记录][python]python爬虫,下载某图片网站的所有图集

    随笔仅用于学习交流,转载时请注明出处,http://www.cnblogs.com/CaDevil/p/5958770.html 该随笔是记录我的第一个python程序,一个爬去指定图片站点的所有图集 ...

  7. php下载远程图片方法总结(curl手动解析header)curl跳转问题解决

    常用方法一般有:. file_get_contents file_put_contents readfile($file) //效率很高. 一般代码: /** * 抓取远程图片 * * @param ...

  8. python--批量下载豆瓣图片之升级版本

    周末下雨没法出门,刷刷豆瓣看看妹子,本想拿以前脚本下载点图片,结果发现运行失败,之前版本为<python--批量下载豆瓣图片>,报错HTTP Error 403: Forbidden,网上 ...

  9. 批量下载网站图片的Python实用小工具(下)

    引子 在 批量下载网站图片的Python实用小工具 一文中,讲解了开发一个Python小工具来实现网站图片的并发批量拉取.不过那个工具仅限于特定网站的特定规则,本文将基于其代码实现,开发一个更加通用的 ...

随机推荐

  1. android开发学习---linux下开发环境的搭建&& android基础知识介绍

    一.配置所需开发环境 1.基本环境配置 JDK 5或以上版本(仅有JRE不够) (http://www.oracle.com/technetwork/java/javase/downloads/ind ...

  2. iOS应用之间的跳转

    app应用跳转的原理解析 如何实现两个app应用之间的跳转 如何实现两个app之间跳转到指定界面 二.应用跳转原理 相信从一个应用跳转到另一个应用大家并不陌生,最常见的莫过于第三方登录,支付宝支付等等 ...

  3. QQ模仿之弹窗ADDFriend事件

    大家自己分析吧 #pragma once //演示QQ2009 #define WINDOW_WIDTH 250 //窗口宽度 #define WINDOW_HEIGHT 600 //窗口高度 str ...

  4. ubuntu下安装配置minicom(解决默认的端口/dev/tty8,改不过来的问题)

    Minicom是linux下串口通信的软件,下面讲下ubuntu Minicom的安装和配置. 安装: sudo apt-get install minicom 或在新立得软件包管理器中搜索“mini ...

  5. git学习笔记(三)—— 远程仓库

    一.gitHub&&SSH Key 为git仓库提供托管服务的,所以注册一个github账号,就可以免费获得git远程仓库. 本地Git仓库和GitHub仓库之间的传输是通过SSH加密 ...

  6. Sqlserver大数据量分区表创建

    /* 逆向删除对象 DROP PARTITION SCHEME [PS_BasicPolicy2014]; DROP PARTITION FUNCTION [PF_BasicPolicy2014]; ...

  7. C#基础第五天-作业答案-用DataTable制作名片集

    .DataTable 实现 DataTable PersonCard = new DataTable(); //创建一个DataTable DataTable PersonCardCopy = new ...

  8. kafka 配置文件注释

    文章转载自:http://liyonghui160com.iteye.com/blog/2163899 server.properties配置: server.properties中所有配置参数说明( ...

  9. javaweb可部署目录结构

    webApp //项目名称 -META-INF --MANIFEST.MF -WEB-INF --classes   //编译class文件 --lib  //依赖jar --web.xml -ind ...

  10. Android网络功能之会话发起协议SIP

    原文:http://android.eoe.cn/topic/android_sdk * 会话发起协议* Android提供了一个支持会话发起协议(SIP)的API,这可以让你添加基于SIP的网络电话 ...