文档章节

Java客户端HttpClient和HttpURLConnection修改请求头Host问题

langke
 langke
发布于 2016/08/03 17:19
字数 215
阅读 65
收藏 0

Method里有method.setRequestHeader(headerName, headerValue)方法,但是没有效果,服务端收到的Host还是IP,跟踪下源码,发现这样写可以生效

      GetMethod  method = new GetMethod(url);

      method.getParams().setVirtualHost("google.org");

if(header_user_agent!=null)

method.setRequestHeader("User-agent", header_user_agent);

if(header_referer!=null)

method.setRequestHeader("Referer", header_referer);

/**

* 设置代理服务

* @param httpClient

*/

public static void httpClientProxy(HttpClient httpClient){

String proxy_host = Config.get().get("proxy_host");

int proxy_port = Config.get().getInt("proxy_port", 8080);

String proxy_user = Config.get().get("proxy_user");

String proxy_password = Config.get().get("proxy_password");

String proxy_domain = Config.get().get("proxy_domain");

if(proxy_host!=null){

httpClient.getHostConfiguration().setProxy(proxy_host, proxy_port);

}

if(proxy_user!=null && proxy_password!=null){

//使用抢先认证

httpClient.getParams().setAuthenticationPreemptive(true);

httpClient.getState().setProxyCredentials(AuthScope.ANY, new UsernamePasswordCredentials(proxy_user,proxy_password)); 

//NT认证代理

if(proxy_domain!=null)

httpClient.getState().setProxyCredentials(AuthScope.ANY,new NTCredentials(proxy_user, proxy_password, "", ""));

}

}

HttpURLConnection还在研究中,先去找下sun.net.www.protocol.http的源码

..............终于在这里找到了http://download.java.net/jdk6/source/

看了sun.net.www.protocol.http.HttpURLConnection

可以这样写

  System.setProperty("sun.net.http.allowRestrictedHeaders", "true");

  conn = (HttpURLConnection) new URL(url).openConnection();

  conn.setRequestProperty( "User-agent", "Mozilla/9.0 (compatible; MSIE 10.0; Windows NT 8.1; .NET CLR 2.0.50727)" );

  conn.setRequestProperty("Host", "google.org");

本文转载自:http://www.cnblogs.com/langke93/archive/2011/09/30/2196258.html

langke
粉丝 1
博文 70
码字总数 3645
作品 0
架构师
私信 提问
Java HTTP 组件库选型看这篇就够了

原文出处:行思錄 Java HTTP 组件库选型看这篇就够了 最近项目需要使用 Java 重度调用 HTTP API 接口,于是想着封装一个团队公用的 HTTP client lib. 这个库需要支持以下特性: 连接池管理,...

行思錄
2018/09/25
0
0
android中网络操作使用总结(http)

Android是作为智能手机的操作系统,我们开发的应用,大多数也都需要连接网络,通过网络发送数据、获取数据,因此作为一个应用开发者必须熟悉怎么进行网络访问与连接。通常android中进行网络连...

码农明明
2014/05/22
0
6
HttpClient/HttpUrlConnect之代理、重定向、跨域和模拟登录(session)

HttpClient和HttpUrlConnect都是java的第三方jar包,可以在maven仓库里面查询到,这两个库都是和强大的类,可以用来模拟浏览器的一些行为,从而实现网页抓取和接口调用。 这两个jar包使用其中...

陨石坠灭
2018/11/19
0
0
Java客户端基于http上传文件

java作为客户端基于http上传文件的2种方式:apache的HttpClient 与 jdk的HttpURLConnection httpClient 需要引入的jar包

零二一七
2016/03/16
0
0
HttpClient在多线程环境下踩坑总结

HttpClient在多线程环境下踩坑总结 问题现场 在多线程环境下使用HttpClient组件对某个HTTP服务发起请求,运行一段时间之后发现客户端主机CPU利用率呈现出下降趋势,而不是一个稳定的状态。 ...

优惠券发放
03/28
0
0

没有更多内容

加载失败,请刷新页面

加载更多

高并发场景下的缓存有哪些常见的问题?

一、缓存一致性问题 当数据时效性要求很高时,需要保证缓存中的数据与数据库中的保持一致,而且需要保证缓存节点和副本中的数据也保持一致,不能出现差异现象。 这就比较依赖缓存的过期和更新...

别打我会飞
21分钟前
1
0
List list = new ArrayList()为何父类引用指向子类对象(多态)

态:要有继承,方法的重写,父类引用指向子类对象 疑问一:父类引用指向子类对象 与指向父类对象 Animal cat = new Cat(); //向上转型。 父类引用指向子类对象,该引用不能再访问子类新增加的...

architect刘源源
21分钟前
0
0
分而治之-快速排序

快速排序的思想: 快速排序首先在数组中确定1个枢纽项(比如数组中的第一个元素),将大于该枢纽项的元素放到右侧,小于该枢纽项的元素放到左侧,这样枢纽项将数组划分成两部分。接着继续对划...

万山红遍
今天
4
0
Qt编写自定义控件9-导航按钮控件

前言 导航按钮控件,主要用于各种漂亮精美的导航条,我们经常在web中看到导航条都非常精美,都是html+css+js实现的,还自带动画过度效果,Qt提供的qss其实也是无敌的,支持基本上所有的CSS2属...

飞扬青云
今天
3
0
Python开发工具:pyJasper

原文:https://www.oschina.net/p/pyjasper 前言 pyJasper是 JasperReports 网络服务器的 Python 客户端。 pyJasper 是一组 Python 基础工具,可以用来处理 JasperReports 报表 。因为 Jasper...

A_裙232550246
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部