`
eimhee
  • 浏览: 2151126 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

httpclient4.3下载远程图片,设置user-agent和refer

阅读更多

 

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();

		}

	}
}

 

http://laravel.iteye.com/

 

1
0
分享到:
评论

相关推荐

    httpclient4.3工具类

    HttpClient 4.3版本是其一个稳定的发行版,它引入了许多改进和新特性,以提升性能和易用性。在这个`httpclient4.3工具类`中,我们看到的是一个自定义的`httpclientUtils`,它是为了满足特定项目需求而编写的,集成了...

    httpClient4.3官方包

    这个"httpClient4.3官方包"包含了HttpClient 4.3.1版本的所有源代码和必要的文档文件,使得用户可以直接在自己的项目中使用或进行深入学习。 HttpClient 4.3版本引入了许多改进和新特性,如支持最新的HTTP/1.1和...

    httpClient4.3

    在使用 HttpClient 4.3 时,开发人员通常需要依赖两个 JAR 包:`httpclient-4.3.jar` 和 `httpcore-4.3.jar`。`httpcore-4.3.jar` 是 HttpClient 的基础组件,提供了网络通信的核心功能,如套接字连接和输入/输出流...

    httpclient4.3 封装工具类

    HttpClient 4.3版本是对该库的一次重要更新,提供了更多的功能和优化。这个封裝工具类是对HttpClient 4.3进行的二次开发,旨在简化HTTP请求的处理,解决一些常见的问题,如代理设置、多线程并发请求、SSL安全连接...

    httpclient-4.3.jar

    《Apache HttpClient 4.3详解》 Apache HttpClient是一款开源的Java库,专为执行HTTP请求而设计,广泛应用于各类Web服务的开发中。其版本4.3是该库的一个重要迭代,提供了诸多改进和新特性,旨在提升性能、稳定性和...

    httpclient4.3.x及其依赖jar包

    HttpClient 4.3.x是该库的一个重要版本,它提供了丰富的功能和改进,使得开发者能够更方便地与Web服务器进行交互。在本文中,我们将深入探讨HttpClient 4.3.x的核心特性、依赖关系以及如何在实际项目中应用。 **...

    httpClient4.3 Jar包 demo

    在这个"httpClient4.3 Jar包 demo"中,你将找到HttpClient 4.3的jar文件以及相关的示例代码,对于学习和理解HttpClient的使用非常有帮助。 HttpClient 4.3主要知识点包括: 1. **基础概念**: - **HttpClient对象...

    httpclient4.3 和 httpcore4.4

    HttpClient 4.3是一个重大的更新,它引入了诸多增强功能和性能优化。首先,HttpClient 4.3支持了HTTP/1.1和HTTP/2协议,使开发者可以利用HTTP/2的多路复用(multiplexing)特性,提高并发请求的效率,减少网络延迟。...

    HttpClient4.3需要的jar

    这个压缩包包含了HttpClient 4.3版本所需的jar文件和其他依赖库,以确保能够正确运行基于HttpClient的Java应用。 在HttpClient 4.3中,主要知识点包括: 1. **基本概念**:HttpClient是一个客户端编程工具包,它...

    httpclient4.3所需jar包

    在Java项目中使用HTTPClient 4.3,首先需要下载相关的jar包。提供的"httpclient43"压缩包应包含所有必需的依赖,包括HTTPClient主库以及HTTPCore、Apache Commons Codec等相关组件。将这些jar文件添加到项目的类路径...

    httpclient 4.3 中文版

    ### HttpClient 4.3 中文版相关知识点 #### 一、概述 Apache HttpClient 是一个用于构建 HTTP 客户端的应用程序编程接口 (API),属于 Apache Jakarta Commons 的一部分。该库支持 HTTP 协议的最新标准,并提供了...

    HTTPClient 4.3.X

    1. **基本用法**:如何创建HttpClient实例,发起GET和POST请求,设置请求头,携带参数等。 2. **连接管理**:理解ConnectionManager,如何设置连接池大小,超时时间,复用连接等。 3. **请求执行器**:使用...

    user-agent大全

    ### User-Agent大全解析 在IT领域,特别是在Web开发与维护工作中,User-Agent(用户代理)...理解和掌握User-Agent字符串对于Web开发者来说是非常重要的,它可以帮助开发者更好地适配不同的客户端环境,提升用户体验。

    httpclient4.3 设置代理

    javase http通讯技术 apache httpclient4.3 设置代理详解

    浅谈Okhttp去除请求头user-agent

    "浅谈Okhttp去除请求头user-agent" Okhttp是一个流行的Android网络请求库,它提供了一个简洁的API来发送HTTP请求。然而,在某些情况下,我们需要去除请求头中的User-Agent信息,以避免服务器端的检测或其他原因。本...

    HttpClient4.3教程共51页.pdf.zip

    HttpClient 4.3版本是一个重要的里程碑,它引入了许多新特性、优化和改进,旨在提高性能,增强稳定性和易用性。这个教程可能是针对开发者设计的,帮助他们深入理解和有效地使用HttpClient 4.3进行网络请求。 ...

    httpclient4.3 封装工具类.zip

    HttpClient 4.3 版本是其一个稳定且功能丰富的版本,提供了许多改进和新特性。这个压缩包“httpclient4.3 封装工具类.zip”很可能包含了一些预先封装好的工具类,用于简化使用HttpClient进行网络请求的过程。以下是...

    Httpclient 4.3 jar包

    这个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

    httpclient-4.3-beta1

    commons-codec-1.3.jar,commons-httpclient-3.1.jar,commons-logging-1.1.jar)

    2. **commons-httpclient-3.1.jar**:这是Apache HttpClient库的3.1版本。HttpClient是一个功能强大的HTTP客户端实现,支持各种HTTP协议特性,如HTTP/1.1、HTTPS、连接管理、重定向、认证等。在图片上传中,开发者...

Global site tag (gtag.js) - Google Analytics