URL 授權訪問另外一種方法,利用 Java 1.1 訪問密碼保護的 URL
https://blog.csdn.net/jserkang/archive/2005/03/13/318623.aspx
接入9588短信網關(http協議),9588的iis上的短信服務url需要身份驗證,
在程序中使用的URL:https://UserName:Password@000.000.000.000https://yq.aliyun.com/SmbpHttpAgent/
接入java代碼:
URL url = new URL(buf.toString()); System.out.println("****"+buf.toString() );
HttpURLConnection conn = (HttpURLConnection)url.openConnection();
String password = "user:password;
BASE64Encoder base = new BASE64Encoder();
String encodedPassword = base.encode(password.getBytes());
conn.setRequestProperty("Authorization", "Basic " + encodedPassword);
conn.setRequestMethod("GET");
BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream()));
while(in.readLine()!=null){ out.println(in.readLine()); bool = true; }
接入asp代碼
function SendMessage(mobile,strMessage)
Dim str,url,postmsg
url="https://000.000.000.00https://yq.aliyun.com/SmbpHttpAgent/Sxxxxxxx
Set objHTTP = Server.CreateObject("MSXML2.XMLHTTP")
Set xmlDOC =Server.CreateObject("MSXML.DOMDocument")
'設置參數及其值
strRequest = url1
objHTTP.Open "POST", postmsg, False,"接入帳號","接入密碼"
'設置這個Content-Type很重要
objHTTP.SetRequestHeader "Content-Type", "application/x-www-form-urlencoded"
objHTTP.Send(strRequest)
bOK = xmlDOC.load(objHTTP.responseXML)
'看看狀態值
if objHTTP.Status=200 then
xmlStr = xmlDOC.xml
Response.Write xmlStr
else
Response.Write objHTTP.Status&"<br>"
Response.Write objHTTP.StatusText
end if
end function
John Zukowski
摘要
在上一篇的tip, Java Tip 46, 描述了如何利用Java 程序訪問密碼保護的 URL,通過 Java 1.2 的新的 Authenticator 類。如果你或者你的用戶轉到 Java 1.1 下該怎麼辦呢?基本上,沒有 Java 1.2,你會失掉 Authenticator帶來的好處。但別失望! 這篇文章將展示 Java 1.1 小程序片和應用程序如 何訪問需要輸入用戶名稱和密碼的R訪問需要輸入用戶名稱和密碼的 URLs.(1250字)
非常感謝 David Wallace Croft,他跟蹤並修複了 Base64Converter 類的原始版本的一個 bug, ?經過修改的類的源代碼在這篇短文中列出。
在上一篇技巧中,我們引入了如下的場景:你使用喜歡的瀏覽器在網上衝浪,並遇到了一個URL 需要代理或HTTP服務器的授權。在屏幕上出現的是一個標準的對話框,必須在其中輸入你的用戶名稱和密碼來訪問這個站點。為了更清楚起見,屏幕上的對話框如下圖所示。
在 Java 程序中,你將發現一個問題:當你試圖從 InputStream 中讀取和URL相關的信息時,一個 FileNotFoundException將會拋出。
從 Java 1.2開始,可以利用 Authenticator 類,如上麵所提到的,在 Java Tip 46 你已經學到。然而,在比Java 1.2 早的版本
中,在試圖從 URL 中讀取數據之前首先需要知道所訪問的 URL 是否是受密碼保護的。如果 URL 是密碼保護的,必須手動的確認每
個URL 的密碼保護響應,然後才能訪問所需要的內容。密碼保護響應以授權要求屬性的形式出現。這種屬性通過 URLConnection 和?br /> URL相關聯。一旦授權要求被滿足,當到達某個 URL 時,上麵的信息是可以被訪問的。
授權字符有著如下的形式“Authorization: Basic 用戶名:密碼,”其中,基本授權字段以Base64格式編碼。(編碼格式的描述可以
可以在 RFC 1113 中得到。一個RFC是一個“requst for comment”文檔,基本上描述某些Internet 標準,在本例中,#1113 描述
了消息加密和授權程序,參見下麵的 資源 ),為了編碼,可以使用 sun.misc package 中的 BASE64Encoder 類,或者創建自己的類。
?
為了建立這個訪問,隻需簡單的確認 URL's URLConnection 是否有“授權”要求屬性。下麵的步驟描述了怎樣進行。
步驟1:創建 URL
URL url = new URL (urlString);
步驟2:為specificURL 獲得用戶名稱和密碼
步驟3:將它們放入String並用冒號":"分開
String userPassword = theUsername + ":" + thePassword;
步驟4:對字符串進行編碼
String encoding = new sun.misc.BASE64Encoder().encode (userPassword.getBytes());
步驟5: 通過 URL 創建 URLConnection
URLConnection uc = url.openConnection();
步驟6:為URLConnection 設置“授權”要求屬性
uc.setRequestProperty ("Authorization", "Basic " + encoding);
本文來自CSDN博客,轉載請標明出處:https://blog.csdn.net/jserkang/archive/2005/03/13/318623.aspx
最後更新:2017-04-02 06:51:19