2014-12-02 64 views
0

所以我想登錄到使用基本身份驗證登錄的網頁。通過基本身份驗證登錄,然後打開瀏覽器

如果我使用Authorization Header發送HTTP Get,我會以HTML的形式獲得成功響應。但後來,它再次問我,登錄,因爲它不記得,我已經登錄

所以我的問題是:

我如何保存這些信息,我已經登錄?

我知道,我之前已經提出過這個問題,但由於沒有人在另一個線程上回答我最後的希望是打開另一個線程。

另一個線程:Android doesnt notice when i do an WWW-Authenticate


編輯:

所以我想要做的是:

Intent browserIntent = new Intent(Intent.ACTION_VIEW,Uri.parse("The Website with the Authentication")); // Here, i want to add the request header 
     handler.startActivity(browserIntent); 

但我不知道怎麼樣,因爲,你唯一可以發送意圖是Url(並且沒有請求頭)。

希望這可以讓事情更清楚。

回答

0

基本認證不保存服務器端的狀態。每個請求都要求您提供登錄信息。

通常會發生什麼事是:

  1. 瀏覽器發出的URL請求,缺乏任何認證。
  2. 服務器返回代碼401,該URL需要基本認證。
  3. 瀏覽器詢問(用戶或其自己的某個數據庫)的用戶名和密碼。如果它向用戶詢問密碼,瀏覽器會將用戶名/密碼存儲在內部數據庫中,並將其輸入到該URL中。
  4. 對於此URL的每個進一步請求,瀏覽器都會在HTTP GET請求中包含該用戶名和密碼。

所以基本的答案是,服務器不記得你已經登錄。瀏覽器記得這一點。由於您正在編寫瀏覽器,因此您的應用程序需要記住該URL的用戶名/密碼組合。無論您在收到401響應後現在做什麼,都只需要爲該URL做點什麼。你甚至不需要等待401響應。

+0

我是這麼想的。任何想法如何將授權標題添加到Uri?或者我可以如何使用請求頭調用任何瀏覽器? – 2014-12-02 20:51:11

+0

在你的問題中,你聲明你可以發送HTTP Get和Authorization頭。這就是你需要做的。您只需要爲每個請求執行此操作。 – 2014-12-02 21:03:32

+0

問題是,即使我通過HTTPClient執行HTTPGet,它也不會被瀏覽器注意到。而在Android中,您可以通過Intent打開瀏覽器。唯一的參數是Uri。所以我不知道在哪裏把我的請求標題放在那裏...但無論如何,已經感謝您的迴應。 – 2014-12-02 21:13:58