使用httpclient下载 页面、图片
代码
- import java.io.IOException;
- import java.io.UnsupportedEncodingException;
- import org.apache.http.client.ClientProtocolException;
- import org.apache.http.client.config.CookieSpecs;
- import org.apache.http.client.config.RequestConfig;
- import org.apache.http.client.methods.CloseableHttpResponse;
- import org.apache.http.client.methods.HttpGet;
- import org.apache.http.impl.client.CloseableHttpClient;
- import org.apache.http.impl.client.HttpClients;
- import org.apache.http.util.EntityUtils;
- import org.slf4j.Logger;
- import org.slf4j.LoggerFactory;
- public class MyHttpClientUtils {
- private static Logger logger = LoggerFactory.getLogger(MyHttpClientUtils.class);
- private static final int HTTPCLIENT_TIMEOUT = 5000;
- public static Tuple2<Boolean,String> getPageByUrl(String pageUrl, String encode) throws UnsupportedEncodingException{
- logger.info("pageurl=" + pageUrl);
- String body = null;
- RequestConfig requestConfig = RequestConfig.custom()
- .setSocketTimeout(HTTPCLIENT_TIMEOUT) //socket超时
- .setConnectTimeout(HTTPCLIENT_TIMEOUT) //connect超时
- .build();
- CloseableHttpClient httpClient = HttpClients.custom()
- .setDefaultRequestConfig(requestConfig)
- .build();
- HttpGet httpGet = new HttpGet(pageUrl);
- try {
- CloseableHttpResponse response = httpClient.execute(httpGet);
- String statusCode = String.valueOf(response.getStatusLine().getStatusCode());
- logger.info("getStatusCode=" + response.getStatusLine().getStatusCode());
- if(response.getStatusLine().getStatusCode() != 200) {
- logger.info("返回码异常:" + response.getStatusLine().getStatusCode());
- return new Tuple2<Boolean, String>(false, null);
- }
- body = EntityUtils.toString(response.getEntity(), encode);
- // System.out.println("body=" + body);
- } catch (IOException e) {
- System.out.println("----------Connection timeout--------");
- // return ne
- }
- return new Tuple2<Boolean, String>(true, body);
- }
- public static Tuple2<Boolean,byte[]> getPicByteArray(String picUrl) throws ClientProtocolException, IOException {
- logger.info("下载url=" + picUrl);
- RequestConfig globalConfig = RequestConfig.custom().setCookieSpec(CookieSpecs.STANDARD).setConnectionRequestTimeout(HTTPCLIENT_TIMEOUT).setConnectTimeout(HTTPCLIENT_TIMEOUT).build();
- CloseableHttpClient httpClient = HttpClients.custom().setDefaultRequestConfig(globalConfig).build();
- HttpGet httpGet = new HttpGet(picUrl);
- CloseableHttpResponse response = httpClient.execute(httpGet);
- logger.info("返回的状态码:" + response.getStatusLine().getStatusCode());
- if(response.getStatusLine().getStatusCode() == 200) {
- byte[] bytes = EntityUtils.toByteArray(response.getEntity());
- return new Tuple2<>(true, bytes);
- }else{
- return new Tuple2<>(false, null);
- }
- }
- }
- package testGetpic;
- import java.io.FileOutputStream;
- import java.io.IOException;
- import org.apache.http.Header;
- import org.apache.http.client.config.CookieSpecs;
- import org.apache.http.client.config.RequestConfig;
- import org.apache.http.client.methods.CloseableHttpResponse;
- import org.apache.http.client.methods.HttpGet;
- import org.apache.http.impl.client.CloseableHttpClient;
- import org.apache.http.impl.client.HttpClients;
- import org.apache.http.util.EntityUtils;
- public class TestPic2 {
- public static void main(String[] args) throws IOException{
- RequestConfig globalConfig = RequestConfig.custom().setCookieSpec(CookieSpecs.STANDARD).setConnectionRequestTimeout(6000).setConnectTimeout(6000).build();
- CloseableHttpClient httpClient = HttpClients.custom().setDefaultRequestConfig(globalConfig).build();
- HttpGet httpGet = new HttpGet("http://xxxx.com/abc.jpg");
- CloseableHttpResponse response = httpClient.execute(httpGet);
- Header[] headerArray = response.getAllHeaders();
- for(Header h : headerArray) {
- System.out.println(h.getName());
- System.out.println(h.getValue());
- System.out.println("======");
- }
- System.out.println("---------------");
- System.out.println(response.getStatusLine().getStatusCode());
- if(response.getStatusLine().getStatusCode() == 200) {
- // for(Header h :response.getAllHeaders()){
- // System.out.println(h.getElements().length);
- // for(HeaderElement he :h.getElements()){
- // System.out.println("pc=" + he.getParameterCount());
- // }
- // System.out.println( h.getName() );
- // System.out.println( h.getValue() );
- // }
- byte[] b = EntityUtils.toByteArray(response.getEntity());
- FileOutputStream fos = new FileOutputStream("test2.jpg");
- fos.write(b);
- fos.close();
- }
- }
- }
使用httpclient下载 页面、图片的更多相关文章
- Android采用HttpClient下载图片
在上一章中谈到Android采用HttpURLConnection下载图片,本章使用HttpClient下载图片 HttpURLConnection与HttpClient的差别: HttpClient ...
- 项目遇到的小问题(关于vue-cli中js点击事件不起作用和iconfont图片下载页面css样式乱的解答)
第一个:关于vue-cli中js点击事件不起作用 在vue的methods方法queryBtnFun()中拼接html和click操作事件的时候,发现点击事件一起未起作用: 后来发现是DOM执行顺序 ...
- python 爬虫之requests爬取页面图片的url,并将图片下载到本地
大家好我叫hardy 需求:爬取某个页面,并把该页面的图片下载到本地 思考: img标签一个有多少种类型的src值?四种:1.以http开头的网络链接.2.以“//”开头网络地址.3.以“/”开头绝对 ...
- C#获取网页的HTML码、下载网站图片、获取IP地址
1.根据URL请求获取页面HTML代码 /// <summary> /// 获取网页的HTML码 /// </summary> /// <param name=" ...
- 批量下载网站图片的Python实用小工具
定位 本文适合于熟悉Python编程且对互联网高清图片饶有兴趣的筒鞋.读完本文后,将学会如何使用Python库批量并发地抓取网页和下载图片资源.只要懂得如何安装Python库以及运行Python程序, ...
- [记录][python]python爬虫,下载某图片网站的所有图集
随笔仅用于学习交流,转载时请注明出处,http://www.cnblogs.com/CaDevil/p/5958770.html 该随笔是记录我的第一个python程序,一个爬去指定图片站点的所有图集 ...
- php下载远程图片方法总结(curl手动解析header)curl跳转问题解决
常用方法一般有:. file_get_contents file_put_contents readfile($file) //效率很高. 一般代码: /** * 抓取远程图片 * * @param ...
- python--批量下载豆瓣图片之升级版本
周末下雨没法出门,刷刷豆瓣看看妹子,本想拿以前脚本下载点图片,结果发现运行失败,之前版本为<python--批量下载豆瓣图片>,报错HTTP Error 403: Forbidden,网上 ...
- 批量下载网站图片的Python实用小工具(下)
引子 在 批量下载网站图片的Python实用小工具 一文中,讲解了开发一个Python小工具来实现网站图片的并发批量拉取.不过那个工具仅限于特定网站的特定规则,本文将基于其代码实现,开发一个更加通用的 ...
随机推荐
- android开发学习---linux下开发环境的搭建&& android基础知识介绍
一.配置所需开发环境 1.基本环境配置 JDK 5或以上版本(仅有JRE不够) (http://www.oracle.com/technetwork/java/javase/downloads/ind ...
- iOS应用之间的跳转
app应用跳转的原理解析 如何实现两个app应用之间的跳转 如何实现两个app之间跳转到指定界面 二.应用跳转原理 相信从一个应用跳转到另一个应用大家并不陌生,最常见的莫过于第三方登录,支付宝支付等等 ...
- QQ模仿之弹窗ADDFriend事件
大家自己分析吧 #pragma once //演示QQ2009 #define WINDOW_WIDTH 250 //窗口宽度 #define WINDOW_HEIGHT 600 //窗口高度 str ...
- ubuntu下安装配置minicom(解决默认的端口/dev/tty8,改不过来的问题)
Minicom是linux下串口通信的软件,下面讲下ubuntu Minicom的安装和配置. 安装: sudo apt-get install minicom 或在新立得软件包管理器中搜索“mini ...
- git学习笔记(三)—— 远程仓库
一.gitHub&&SSH Key 为git仓库提供托管服务的,所以注册一个github账号,就可以免费获得git远程仓库. 本地Git仓库和GitHub仓库之间的传输是通过SSH加密 ...
- Sqlserver大数据量分区表创建
/* 逆向删除对象 DROP PARTITION SCHEME [PS_BasicPolicy2014]; DROP PARTITION FUNCTION [PF_BasicPolicy2014]; ...
- C#基础第五天-作业答案-用DataTable制作名片集
.DataTable 实现 DataTable PersonCard = new DataTable(); //创建一个DataTable DataTable PersonCardCopy = new ...
- kafka 配置文件注释
文章转载自:http://liyonghui160com.iteye.com/blog/2163899 server.properties配置: server.properties中所有配置参数说明( ...
- javaweb可部署目录结构
webApp //项目名称 -META-INF --MANIFEST.MF -WEB-INF --classes //编译class文件 --lib //依赖jar --web.xml -ind ...
- Android网络功能之会话发起协议SIP
原文:http://android.eoe.cn/topic/android_sdk * 会话发起协议* Android提供了一个支持会话发起协议(SIP)的API,这可以让你添加基于SIP的网络电话 ...