2012-06-20 33 views
1

我想設置一個Android應用程序,我可以在任意代理或HTTP認證後面訪問URL。也就是說,應用程序不會立即知道URL是否需要身份驗證,並且會通過詢問用戶的憑據來響應身份驗證請求,這與使用Android瀏覽器的方式相同。Android HttpClient反應認證

我最近編制了how to request user authentication for a WebView,響應來自瀏覽器的認證請求,啓動對話框,並將用戶推進到目標頁面。我期待與HttpClient一樣。

的基本過程,正如我看到它,是:

  1. 經由HttpClient.execute執行請求。
    • 如果401或407沒有正確的標題,觸發一個「完成」回調。
    • 否則...
  2. 彈出一個詢問用戶名和密碼的對話框。
  3. 通過HttpClient.getCredentialsProvider().setCredentials在HTTP客戶端中設置http憑證。
  4. 返回步驟1,直到用戶單擊取消或服務器放棄。在這種情況下,觸發收到最後一個響應的「失敗」回調。

我在正確的軌道上還是有人已經實施了類似的東西?我不想在這方面重新發明輪子。

回答

0

上述反應的方法做的工作。響應任意401或407請求是有效的,你需要支持你期望遇到的每個認證方案,所以像UsernamePasswordCredentials這樣的東西不適用於NTLM。

0

你應該嘗試authentication example的Apache網站

httpclient.getCredentialsProvider().setCredentials(
        new AuthScope("localhost", 443), 
        new UsernamePasswordCredentials("username", "password")); 

直接鏈接到Java文件http://hc.apache.org/httpcomponents-client-ga/httpclient/examples/org/apache/http/examples/client/ClientAuthentication.java

+0

對,這是我解決方案的第三步。前兩個步驟驗證是否存在身份驗證要求(從響應中獲取「AuthScope」)並顯示對話框(從用戶處獲得「UsernamePasswordCredentials」)。如果流程中存在任何需要解決的問題,我是否真的對整個流程是否存在實施感興趣。 –

+0

不是最終答案,但你可能想看看http://stackoverflow.com/a/10850182/808940 – Merlin

+0

也是這個http://stackoverflow.com/a/9716283/808940 – Merlin