2012-10-09 105 views
4

基本身份驗證我發現了一個例子在Android

try { 
     String data = "YOUR REQUEST BODY HERE"; 
     // 
     CredentialsProvider credProvider = new BasicCredentialsProvider(); 
     credProvider.setCredentials(new AuthScope(AuthScope.ANY_HOST, AuthScope.ANY_PORT), 
      new UsernamePasswordCredentials("YOUR USER NAME HERE", "YOUR PASSWORD HERE")); 
     // 
     DefaultHttpClient http = new DefaultHttpClient(); 
     http.setCredentialsProvider(credProvider); 
     // 
     HttpPut put = new HttpPut("YOUR HTTPS URL HERE"); 
     try { 
      put.setEntity(new StringEntity(data, "UTF8")); 
     } catch (UnsupportedEncodingException e) { 
      Log.e(TAG, "UnsupportedEncoding: ", e); 
     } 
     put.addHeader("Content-type","SET CONTENT TYPE HERE IF YOU NEED TO"); 
     HttpResponse response = http.execute(put); 
     Log.d(TAG, "This is what we get back:"+response.getStatusLine().toString()+", "+response.getEntity().toString()); 
    } catch (ClientProtocolException e) { 
     // 
     Log.d(TAG, "Client protocol exception", e); 
    } catch (IOException e) { 
     // 
     Log.d(TAG, "IOException", e); 
    } 

,但我必須在授權的格式發送一個字符串:<Login>@<ID>:<Passsword>

如何做到這一點?

回答

0

您確定您的服務器確實使用基本身份驗證嗎?如果是,你應該設置憑據是這樣的:

new UsernamePasswordCredentials("[email protected]", "Passsword"); 

否則檢查實際的認證協議是什麼,並實現它(在發送身份驗證頭信息,或作爲URL的一部分或POST參數等)

0

你應該先看看實際HTTP基本就是:http://en.m.wikipedia.org/wiki/Basic_access_authentication#section_3

你的問題的目的不是HTTP Basic和不應該由於被固有的不安全使用的。

我認爲你所要求的應該是URL的一部分。即使採用SSL等附加措施,我仍然不會在URL中嵌入憑據。

HTTP Basic定義了用戶名和密碼必須如何加密(實際上散列)。沒有辦法擁有HTTP和您要求的格式。