HttpClient发布4.0了 而且底层完全重写了,据说无论是效率还是结构都有质的飞跃。
现在也要与时具进,研究研究。
package test.httpclient4.proxy;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import org.apache.http.HttpEntity;
import org.apache.http.HttpHost;
import org.apache.http.HttpResponse;
import org.apache.http.HttpStatus;
import org.apache.http.StatusLine;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.conn.params.ConnRoutePNames;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicStatusLine;
import org.apache.http.util.EntityUtils;
public class GetHttpByProxy {
public static void main(String[] args) throws ClientProtocolException,
IOException {
//实例化一个HttpClient
HttpClient httpClient = new DefaultHttpClient();
//设定目标站点
HttpHost httpHost = new HttpHost("www.shanhe114.com");
//设置代理对象 ip/代理名称,端口
HttpHost proxy = new HttpHost("192.168.1.28", 5608);
//对HttpClient对象设置代理
httpClient.getParams().setParameter(ConnRoutePNames.DEFAULT_PROXY,
proxy);
HttpGet httpGet = new HttpGet("/");
//这里也可以直接使用httpGet的绝对地址,当然如果不是具体地址不要忘记/结尾
//HttpGet httpGet = new HttpGet("http://www.shanhe114.com/");
//HttpResponse response = httpClient.execute(httpGet);
HttpResponse response = httpClient.execute(httpHost, httpGet);
if(HttpStatus.SC_OK==response.getStatusLine().getStatusCode()){
//请求成功
//取得请求内容
HttpEntity entity = response.getEntity();
//显示内容
if (entity != null) {
// 显示结果
BufferedReader reader = new BufferedReader(new InputStreamReader(entity
.getContent(), "UTF-8"));
String line = null;
StringBuffer strBuf = new StringBuffer((int) entity.getContentLength());
while ((line = reader.readLine()) != null) {
strBuf.append(line);
}
strBuf.trimToSize();
System.out.println(strBuf.toString());
}
if (entity != null) {
entity.consumeContent();
}
}
}
}
对于显示将结果转换成String以备后续使用,HttpClient已经为我们提供了一个简便方法
如下
System.out.println(EntityUtils.toString(entity,"utf-8"));
长春生活网
分享到:
相关推荐
总结起来,C#实现的代理服务器允许用户通过不同代理访问网页,提供了更高的网络访问灵活性和隐私保护。这种代理服务器的开发涉及C#网络编程、HTTP协议理解、代理服务器架构设计以及安全性考虑等多个方面的知识。
在IT行业中,HTTP代理是一种网络通信机制,它允许客户端(如Web浏览器)通过另一台服务器作为中介来访问互联网上的资源。这种技术常用于提高匿名性、优化网络性能或绕过特定的网络限制。本篇文章将深入探讨如何使用...
在Java开发中,实现HTTP代理功能可以帮助我们处理各种网络请求,提高性能,以及实现数据抓取、匿名访问等复杂需求。 首先,让我们深入理解HTTP代理的工作原理。HTTP代理服务器接收客户端发起的HTTP请求,并代替...
代理IP,也叫代理服务器,是一种网络通信技术,它在客户端和目标服务器之间充当中介,允许用户通过不同的IP地址访问网络。这在数据采集、匿名浏览、负载均衡等方面有着广泛的应用。 在Java中实现网络爬虫,主要涉及...
在某些情况下,网络访问可能需要通过代理服务器,比如在企业网络环境中或者为了匿名性。`HttpAndHttpsProxy.java`很可能实现了通过代理进行HTTP和HTTPS请求的功能。这可能涉及到配置代理的主机名、端口,以及可能的...
在IT行业中,IP代理是一种网络服务,它允许用户通过一个中间服务器(代理服务器)来访问互联网,以此隐藏用户的原始IP地址,提供匿名性或者提高访问速度。全自动提取IP代理指的是利用自动化工具或程序来批量获取可用...
1. **Java基础**: - 数据类型:了解基本和引用数据类型,以及它们的区别。 - 变量:声明、初始化和作用域。 - 流程控制:if-else、switch、for、while等。 - 类与对象:封装、继承、多态的概念。 - 构造器:...
1. **Java基础** - **数据类型**:Java有两大类数据类型,基本类型(如int, char, boolean)和引用类型(如类,接口,数组)。 - **变量**:声明、初始化和使用变量的基本规则。 - **运算符**:包括算术、比较、...
代理服务器可以用于多种目的,如负载均衡、缓存、安全过滤、匿名访问等。在C#中,我们可以利用.NET Framework或.NET Core提供的Socket类和其他网络相关的类库来实现代理功能。 1. **ProxyConfig.cs**:这是一个配置...
2. **代理设置**:为了增加请求的匿名性或避免频繁请求被封IP,我们可能需要通过代理服务器发送请求。`.NET`支持设置HTTP代理。 3. **请求头设置**:有时我们需要设置特定的请求头,如`User-Agent`,以模拟不同的...
1. **Java基础巩固** - 内部类:理解类中类的概念,以及它们在多线程和匿名类中的应用。 - Socket编程:学习网络通信的基础,包括TCP和UDP协议。 - 多线程和线程池:掌握并发编程,了解同步和异步操作,以及...
通过这种方式,代理服务器可以提高性能(通过缓存重复请求的内容)、提供匿名浏览、过滤网络内容、限制访问特定网站,甚至实现负载均衡。 在"hyk-proxy"项目中,我们可以推测它利用了Java的Socket编程来建立和管理...
C#.NET允许通过HttpWebRequest或HttpClient配置代理,实现匿名抓取。 8. **Cookie管理**:有些网站需要登录才能访问特定数据,这时需要处理Cookie。C#.NET提供了CookieContainer类来管理Cookie,确保请求带有正确的...
- **代理设置**:GoSoSo允许用户设置代理服务器,这对于那些需要匿名浏览或避免IP被目标网站封锁的情况非常有用。代理服务器可以作为网络访问的中介,提供额外的安全性和隐私保护。 - **自动寻找连接**:程序能够...
4. 代理验证模块:找到代理后,程序可能还会进行有效性验证,通过发送请求检测代理是否可用,以及其速度和匿名级别。 总的来说,ProxyNet是一个实用的C#应用程序,通过多线程技术实现了高效地搜索和验证代理服务器...
### C# 入门经典(VS2008)知识点概览 #### 一、C#语言基础 **1.1 引入C#** - **C#简介**:本书第一章介绍了C#...通过学习这些内容,读者可以全面掌握C#编程的基础知识,并能够开发出复杂的Windows和Web应用程序。
它的语法简洁清晰,支持高级特性如泛型、匿名方法、LINQ等,对于构建网络爬虫来说,提供了良好的编程基础。 在设计网络爬虫时,首先需要了解HTTP协议。HTTP(超文本传输协议)是互联网上应用最为广泛的一种网络协议...
在下载数据资源时,使用代理可以提高匿名性,减少被目标网站识别和封禁的风险,同时也可以通过分布在全球各地的代理服务器优化网络速度,尤其是在处理跨国数据访问时。 易源项目采用了Java编程语言,这得益于Java的...
V5DataCollection可能采用了高效的HTTP请求库,如HttpClient,以确保快速、准确地抓取网页数据,同时支持处理各种HTTP头信息和身份验证,适应不同网站的访问需求。 特别值得一提的是,V5数据采集器的代理轮询采集...