httpclient4.3下载远程图片,设置user-agent和伪装成google的refer, 并设置timeout.
首先maven中加入jar依赖关系
<!-- lock httpclient version --> <dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpclient</artifactId> <version>4.3.6</version> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>1.7.10</version> </dependency> <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-io</artifactId> <version>1.3.2</version> </dependency>
package com.mkyong.common.util; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import org.apache.commons.io.IOUtils; import org.apache.http.HttpEntity; import org.apache.http.client.ClientProtocolException; 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.slf4j.Logger; import org.slf4j.LoggerFactory; public class ImageDownloader { private static final String USER_AGENT = "Mozilla/5.0 Firefox/26.0"; private static Logger logger = LoggerFactory.getLogger(ImageDownloader.class); private static final int TIMEOUT_SECONDS = 120; private static final int POOL_SIZE = 120; private static CloseableHttpClient httpclient; public static void main(String[] args) throws ClientProtocolException, IOException { ImageDownloader imageDownloader = new ImageDownloader(); imageDownloader.initApacheHttpClient(); String imageUrl = "https://ibclaty.j.com/niku/ui/uitk/images/s.gif"; imageDownloader.fetchContent(imageUrl); imageDownloader.destroyApacheHttpClient(); } public void initApacheHttpClient() { // Create global request configuration RequestConfig defaultRequestConfig = RequestConfig.custom().setSocketTimeout(TIMEOUT_SECONDS * 1000) .setConnectTimeout(TIMEOUT_SECONDS * 1000).build(); // Create an HttpClient with the given custom dependencies and // configuration. httpclient = HttpClients.custom().setUserAgent(USER_AGENT).setMaxConnTotal(POOL_SIZE) .setMaxConnPerRoute(POOL_SIZE).setDefaultRequestConfig(defaultRequestConfig).build(); } private void destroyApacheHttpClient() { try { httpclient.close(); } catch (IOException e) { logger.error("httpclient close fail", e); } } public void fetchContent(String imageUrl) throws ClientProtocolException, IOException { HttpGet httpget = new HttpGet(imageUrl); httpget.setHeader("Referer", "http://www.google.com"); System.out.println("executing request " + httpget.getURI()); CloseableHttpResponse response = httpclient.execute(httpget); try { HttpEntity entity = response.getEntity(); if (response.getStatusLine().getStatusCode() >= 400) { throw new IOException("Got bad response, error code = " + response.getStatusLine().getStatusCode() + " imageUrl: " + imageUrl); } if (entity != null) { InputStream input = entity.getContent(); OutputStream output = new FileOutputStream(new File("D:\\website\\1.gif")); IOUtils.copy(input, output); output.flush(); } } finally { response.close(); } } }
相关推荐
HttpClient 4.3版本是其一个稳定的发行版,它引入了许多改进和新特性,以提升性能和易用性。在这个`httpclient4.3工具类`中,我们看到的是一个自定义的`httpclientUtils`,它是为了满足特定项目需求而编写的,集成了...
这个"httpClient4.3官方包"包含了HttpClient 4.3.1版本的所有源代码和必要的文档文件,使得用户可以直接在自己的项目中使用或进行深入学习。 HttpClient 4.3版本引入了许多改进和新特性,如支持最新的HTTP/1.1和...
在使用 HttpClient 4.3 时,开发人员通常需要依赖两个 JAR 包:`httpclient-4.3.jar` 和 `httpcore-4.3.jar`。`httpcore-4.3.jar` 是 HttpClient 的基础组件,提供了网络通信的核心功能,如套接字连接和输入/输出流...
HttpClient 4.3版本是对该库的一次重要更新,提供了更多的功能和优化。这个封裝工具类是对HttpClient 4.3进行的二次开发,旨在简化HTTP请求的处理,解决一些常见的问题,如代理设置、多线程并发请求、SSL安全连接...
《Apache HttpClient 4.3详解》 Apache HttpClient是一款开源的Java库,专为执行HTTP请求而设计,广泛应用于各类Web服务的开发中。其版本4.3是该库的一个重要迭代,提供了诸多改进和新特性,旨在提升性能、稳定性和...
HttpClient 4.3.x是该库的一个重要版本,它提供了丰富的功能和改进,使得开发者能够更方便地与Web服务器进行交互。在本文中,我们将深入探讨HttpClient 4.3.x的核心特性、依赖关系以及如何在实际项目中应用。 **...
在这个"httpClient4.3 Jar包 demo"中,你将找到HttpClient 4.3的jar文件以及相关的示例代码,对于学习和理解HttpClient的使用非常有帮助。 HttpClient 4.3主要知识点包括: 1. **基础概念**: - **HttpClient对象...
HttpClient 4.3是一个重大的更新,它引入了诸多增强功能和性能优化。首先,HttpClient 4.3支持了HTTP/1.1和HTTP/2协议,使开发者可以利用HTTP/2的多路复用(multiplexing)特性,提高并发请求的效率,减少网络延迟。...
这个压缩包包含了HttpClient 4.3版本所需的jar文件和其他依赖库,以确保能够正确运行基于HttpClient的Java应用。 在HttpClient 4.3中,主要知识点包括: 1. **基本概念**:HttpClient是一个客户端编程工具包,它...
在Java项目中使用HTTPClient 4.3,首先需要下载相关的jar包。提供的"httpclient43"压缩包应包含所有必需的依赖,包括HTTPClient主库以及HTTPCore、Apache Commons Codec等相关组件。将这些jar文件添加到项目的类路径...
### HttpClient 4.3 中文版相关知识点 #### 一、概述 Apache HttpClient 是一个用于构建 HTTP 客户端的应用程序编程接口 (API),属于 Apache Jakarta Commons 的一部分。该库支持 HTTP 协议的最新标准,并提供了...
1. **基本用法**:如何创建HttpClient实例,发起GET和POST请求,设置请求头,携带参数等。 2. **连接管理**:理解ConnectionManager,如何设置连接池大小,超时时间,复用连接等。 3. **请求执行器**:使用...
### User-Agent大全解析 在IT领域,特别是在Web开发与维护工作中,User-Agent(用户代理)...理解和掌握User-Agent字符串对于Web开发者来说是非常重要的,它可以帮助开发者更好地适配不同的客户端环境,提升用户体验。
javase http通讯技术 apache httpclient4.3 设置代理详解
"浅谈Okhttp去除请求头user-agent" Okhttp是一个流行的Android网络请求库,它提供了一个简洁的API来发送HTTP请求。然而,在某些情况下,我们需要去除请求头中的User-Agent信息,以避免服务器端的检测或其他原因。本...
HttpClient 4.3版本是一个重要的里程碑,它引入了许多新特性、优化和改进,旨在提高性能,增强稳定性和易用性。这个教程可能是针对开发者设计的,帮助他们深入理解和有效地使用HttpClient 4.3进行网络请求。 ...
HttpClient 4.3 版本是其一个稳定且功能丰富的版本,提供了许多改进和新特性。这个压缩包“httpclient4.3 封装工具类.zip”很可能包含了一些预先封装好的工具类,用于简化使用HttpClient进行网络请求的过程。以下是...
这个jar包包括两个主要的组件:`httpclient-4.3.3.jar` 和 `httpmime-4.3.jar`。 1. **HttpClient组件(httpclient-4.3.3.jar)** - **基本概念**:HttpClient 主要负责构建、发送和接收HTTP请求。它支持HTTP/1.1...
httpclient-4.3-beta1
2. **commons-httpclient-3.1.jar**:这是Apache HttpClient库的3.1版本。HttpClient是一个功能强大的HTTP客户端实现,支持各种HTTP协议特性,如HTTP/1.1、HTTPS、连接管理、重定向、认证等。在图片上传中,开发者...