2016-12-07 93 views
1

我使用HttpURLConnection類來管理我的Android應用程序中的HTTP連接。問題是,在某些服務器上,我有一個代碼使用在互聯網瀏覽器上工作的URL。我使用基本身份驗證初始化連接,但我認爲這些服務器需要其他模式。我知道它的工作原理與的libcurl和下面的指令:HttpURLConnection身份驗證模式

curl_easy_setopt(pCurlHandle, CURLOPT_HTTPAUTH, CURLAUTH_ANY); 

但有一個辦法做這樣的事情在Android?目前,我這樣做:

... 
connection.setRequestProperty("Authorization", "Basic " + Base64.encode("username:password")); 
... 

Authenticator嘗試過:

Authenticator.setDefault(new Authenticator() { 

    @Override 
    protected PasswordAuthentication getPasswordAuthentication() 
    { 
     return new PasswordAuthentication("username", "password".toCharArray()); 
    } 
}); 

但我仍然有我的應用程序401。任何想法?

回答

1

好,this post真的幫了我(但我不使用Authenticator類的話),現在我的代碼做這樣的工作(如果需要認證):

  • 初始化我HttpURLConnection基本驗證(見我的問題的代碼中的第一個Java樣本)

  • 測試對象,如果我收到一個代碼爲401,如果是,則檢查服務器是例外的摘要驗證分析響應頭。

  • 重試和手工建造文摘請求屬性(看看我所提到的職位)

  • 和它的作品!

我希望這個答案能幫助別人!