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

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

转载于:https://www.cnblogs.com/langke93/archive/2011/09/30/2196258.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值