URL 授權訪問另外一種方法,利用 Java 1.1 訪問密碼保護的 URL(9588http短信通道接入)

轉載地址:點擊打開鏈接

接入9588短信網關(http協議),9588的iis上的短信服務url需要身份驗證,

在程序中使用的URL:http://UserName:[email protected]/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="http://000.000.000.00/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);



發佈了0 篇原創文章 · 獲贊 3 · 訪問量 12萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章