2011-03-22 72 views
0

我有一個連接到生產Web服務器時工作正常的android應用程序。開發服務器是爲測試將來的版本而創建的。這是一個使用用戶名/密碼鎖定的IIS服務器。發佈數據之前的Windows身份驗證,我錯過了什麼?

我想使用httpclient.getCredentialsProvider()發送用戶名和密碼,所以我可以在做任何事情之前對頁面進行身份驗證,但它似乎沒有正常工作,所以我假設我缺少一些代碼或做錯事。

我試圖搞亂憑證,併發送端口和完整的網址,但這並沒有工作,所以我只是把它切換到null和-1,從我收集意味着它應該在任何網站的任何端口上工作,但我嘗試過的每種方式仍然得到了不認證的相同結果。

這是我現在擁有的。

 HttpParams httpParams = new BasicHttpParams(); 
     HttpConnectionParams.setConnectionTimeout(httpParams, 10000); 
     HttpConnectionParams.setSoTimeout(httpParams, 10000); 
     DefaultHttpClient httpclient = new DefaultHttpClient(httpParams); 
    httpclient.getCredentialsProvider().setCredentials(new AuthScope(null,-1), new UsernamePasswordCredentials("someusername", "somepassword")); 
HttpPost httpost = new HttpPost("someURL"); 

其他不相關的代碼來設置名稱值對張貼

然後

UrlEncodedFormEntity formEntity = new UrlEncodedFormEntity(nvps, HTTP.UTF_8); 
httpost.setEntity(formEntity); 
     HttpResponse response = httpclient.execute(httpost); 
+0

是NTLM或Kerberos? – JarrettV 2011-04-10 22:18:37

回答

0

IIS支持HTTP驗證方法,如基本,摘要和集成。問題是,他們都硬連線到Windows帳戶。這意味着你需要在你的服務器上有一個Windows用戶,用於你想要啓用HTTP-auth的每個帳戶。 有能力做簡單的基本身份驗證再次帳戶存儲例如在數據庫中是非常方便的對一系列類似的Web應用程序的情況下,(WCF)Web服務,REST服務,Silverlight的服務後臺等

enter link description here

相關問題