?? 采用httpclient通過代理連接服務器.txt
字號:
采用HTTPClient通過代理連接服務器
(加入日期:2002-12-13 點擊數:1880)
【對此文發表評論】 【編程愛好者論壇】 【保存文章至硬盤】 【打印文章】
使用代理一般的辦法是用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會彈出用戶名密碼以及作用域輸入框。假如需要取消輸入彈出對話框的話,可以調用HTTPConnection的setAllowUserInteraction(false)方法。
本欄文章均來自于互聯網,版權歸原作者和各發布網站所有,本站收集這些文章僅供學習參考之用。任何人都不能將這些文章用于商業或者其他目的。( ProgramFan.Com )
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -