采用HTTPClient通过代理连接服务器

原创 2002年11月11日 17:56:00
 

使用代理一般的办法是用HTTPConnection的静态方法setProxyServer实现:

HTTPConnection.setProxyServer("my.proxy.dom", 8008);

调用该方法以后产生的HTTPConnection对象都会通过该代理建立服务器连接。

特定某一个连接使用代理:

setCurrentProxy()

你也可以设置连接某些服务器不要采用代理:

HTTPConnection.dontProxyFor("localhost");

假如代理服务器要求用户名密码认证:

AuthorizationInfo.addDigestAuthorization(host, proxyPort, "", name, pass);

其中第三个参数是认证域,一般代理服务器可以设为空字符串,除非你知道服务器的确切域。

还有另外一个方法就是使用DefaultAuthHandler

DefaultAuthHandler.setAuthorizationPrompter(new MyAuthPrompter(pa_name, pa_pass));

MyAuthPrompter是实现了AuthorizationPrompter接口的自定义类:

class MyAuthPrompter implements AuthorizationPrompter

{

    private String  pa_name, pa_pass;

    private boolean been_here = false;

    MyAuthPrompter(String pa_name, String pa_pass) {

       this.pa_name = pa_name;

       this.pa_pass = pa_pass;

    }

    public NVPair getUsernamePassword(AuthorizationInfo challenge, boolean forProxy) {

       if (forProxy  &&  pa_name != null){

           if (been_here) {

              System.out.println("Proxy authorization failed");

                  return null;

           }

           been_here = true;

           return new NVPair(pa_name, pa_pass);

       }

       if (been_here)    {

           System.out.println("Proxy authorization succeeded");

       }

       // print out all challenge info

       if (forProxy)

           System.out.println("The proxy requires authorization");

       else

           System.out.println("The server requires authorization for this resource");

       return null;

    }

}

关于页面认证

一个页面是否需要认证,以及要求认证的信息可以通过HTTPClient/doc/GetAuthInfo.java来获取:

java GetAuthInfo http://some.host.dom/the/file.html

程序会输出认证信息包括认证域。

 

附注:

下载要求用户认证的页面时,HTTPClient会弹出用户名密码以及作用域输入框。假如需要取消输入弹出对话框的话,可以调用HTTPConnectionsetAllowUserInteraction(false)方法。

采用HTTPClient通过代理连接服务器

  • zgqtxwd
  • zgqtxwd
  • 2008年04月25日 23:25
  • 174

Httpclient通过代理访问网络

httpClient通过代理(Http Proxy)进行请求,在浏览一些网站的时候由于各种原因,无法进行访问。这时我们需要通过IE,FireFox进行Http的代理设置,httpclient也可以模拟...
  • ffm83
  • ffm83
  • 2014年12月16日 08:58
  • 3067

httpClient通过代理(Http Proxy)进行请求

http://llying.iteye.com/blog/333644 httpClient通过代理(Http Proxy)进行请求  在浏览一些网站的时候由于各种原因,无法进行访问。  这时我...
  • forlong401
  • forlong401
  • 2014年03月08日 16:25
  • 21158

HttpClient 使用代理访问Https【转】

import java.io.BufferedReader;    import java.io.InputStreamReader;    import org.apache.http.Http...
  • liuxiao723846
  • liuxiao723846
  • 2014年10月28日 18:52
  • 1500

HttpClient代理服务器配置

使用代理服务器最简单的方式就是,指定一个默认的proxy参数。 HttpHost proxy = new HttpHost("someproxy", 8080); DefaultProxyRout...
  • qq_21439971
  • qq_21439971
  • 2016年12月28日 17:26
  • 9447

HttpClient调用第三方系统详解

一.使用HttpClient发送请求、接收响应很简单,一般需要如下几步即可。 1. 创建HttpClient对象。 2. 创建请求方法的实例,并指定请求URL。如果需要发送GET请求,创建Http...
  • fayeyiwang
  • fayeyiwang
  • 2016年05月19日 15:08
  • 904

java httpClient使用代理实现外网访问

项目生产环境往往会有这样的需求,内网的生产环境的应用需要访问互联网上第三方的服务,但又出于安全考虑,不允许该生产机直接访问互联网,这时我们往往通过代理方式来实现网外服务的访问:我们可以在可访问互联网的...
  • wzl19870309
  • wzl19870309
  • 2017年05月16日 18:20
  • 554

httpClient 设置代理请求接口

之前再做一个httpClient接口对接的时候,遇到一个问题,一直报请求超时,当时以为...
  • jimmy609
  • jimmy609
  • 2014年05月21日 09:35
  • 2973

httpClient如何设置代理

public static void main(String args[]) {  StringBuffer sb = new StringBuffer();  //创建HttpClient实例...
  • hedan_hd
  • hedan_hd
  • 2012年08月20日 14:59
  • 43307

Android中使用HttpClient实现HTTP通信效果

HTTP通信,这一案例在操作的时候遇到N多种种问题,是前面看过几个实例里面最麻烦的一个,因为没有系统的接触过JAVA,所以出了很多错误,也无从下手解决,这里经过对错误的检索实现了HTTP通信,以做记录...
  • w_yunlong
  • w_yunlong
  • 2015年12月29日 11:54
  • 1760
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:采用HTTPClient通过代理连接服务器
举报原因:
原因补充:

(最多只允许输入30个字)