明輝手游網(wǎng)中心:是一個(gè)免費(fèi)提供流行視頻軟件教程、在線(xiàn)學(xué)習(xí)分享的學(xué)習(xí)平臺(tái)!

采納HTTPClient通過(guò)代理連接服務(wù)器

[摘要]使用代理一般的辦法是用HTTPConnection的靜態(tài)方法setProxyServer實(shí)現(xiàn):HTTPConnection.setProxyServer("my.proxy.dom&quo...
使用代理一般的辦法是用HTTPConnection的靜態(tài)方法setProxyServer實(shí)現(xiàn):

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

調(diào)用該方法以后產(chǎn)生的HTTPConnection對(duì)象都會(huì)通過(guò)該代理建立服務(wù)器連接。

特定某一個(gè)連接使用代理:

setCurrentProxy()

你也可以設(shè)置連接某些服務(wù)器不要采用代理:

HTTPConnection.dontProxyFor("localhost");

假如代理服務(wù)器要求用戶(hù)名密碼認(rèn)證:

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

其中第三個(gè)參數(shù)是認(rèn)證域,一般代理服務(wù)器可以設(shè)為空字符串,除非你知道服務(wù)器的確切域。

還有另外一個(gè)方法就是使用DefaultAuthHandler:

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

MyAuthPrompter是實(shí)現(xiàn)了AuthorizationPrompter接口的自定義類(lèi):

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;

    }

}

關(guān)于頁(yè)面認(rèn)證

一個(gè)頁(yè)面是否需要認(rèn)證,以及要求認(rèn)證的信息可以通過(guò)HTTPClient/doc/GetAuthInfo.java來(lái)獲。

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

程序會(huì)輸出認(rèn)證信息包括認(rèn)證域。



附注:

下載要求用戶(hù)認(rèn)證的頁(yè)面時(shí),HTTPClient會(huì)彈出用戶(hù)名密碼以及作用域輸入框。假如需要取消輸入彈出對(duì)話(huà)框的話(huà),可以調(diào)用HTTPConnection的setAllowUserInteraction(false)方法。