2012-01-19 94 views
3

所以基本上我需要我的Android應用程序連接到使用URL作爲這樣 Web服務的「http://用戶名:[email protected]」又名基本身份驗證。 很明顯,在允許訪問之前,Web應用會檢查用戶名和密碼,否則不允許請求。Android的 - 基本身份驗證的HTTP請求

我的問題是,我嘗試的所有方法總是說未經授權的(響應代碼401),無論什麼樣的類和方法的組合用來嘗試連接到URL。

有問題的web應用程序旨在返回的東西只有un/pw清除,否則它不會返回任何內容,web應用程序和un/pw等都已檢查並清除。

所以沒有人正確的方式發送請求到這樣的網址,並讓它正常工作?

的Android api8 BTW

UPDATE 原來我的問題是由於它不被機器人/ Apache的HTTP庫直接支持的Web應用程序使用NTLM Windows身份驗證,目前正在研究相應的解決辦法

+0

你嘗試過什麼呢?該網站很可能使用基本或摘要式身份驗證, 您只需創建適當的標題並將其添加到您的請求中即可。 HttpClient甚至爲你提供了API。 –

+0

添加頁眉或認證信息請求,如在了HTTPClient的那些和最新發布了以下 –

+0

這的喜歡的各種實現方式仍然意味着什麼沒有實際的細節。更大的問題是,你是否100%服務器正在使用基本身份驗證?它可能是摘要式身份驗證或某種自定義方案。獲取電匯轉儲,服務器日誌等 –

回答

8

這裏的一些代碼構成了我的一個非常古老的項目。我使用基本身份驗證的一些Web服務,並在當時工作。我不確定自那以後是否有更新的api(這是Android 1.6),但它應該仍然有效。

 HttpGet request = new HttpGet(); 
     request.setURI(new URI(url)); 

      UsernamePasswordCredentials credentials = 
       new UsernamePasswordCredentials(authUser, authPass); 
      BasicScheme scheme = new BasicScheme(); 
      Header authorizationHeader = scheme.authenticate(credentials, request); 
      request.addHeader(authorizationHeader); 

基本上,基本HTTP認證是用戶和密碼的簡單散列。瀏覽器允許你將這些值填入url中,但它實際上是將基本auth頭添加到請求中的工作。

+0

你結合2第一行爲一個更新的api版本像 HttpGet request = new HttpGet(url ); 不幸的是這並沒有解決我的問題,即時通訊開始認爲它與它的實際web應用程序方面的問題:■ –