我在哪裏,我通過server.Initially服務器驗證用戶名/密碼正在實施Basic
認證,這樣我的代碼工作正常,但現在服務器已更改爲Digest
認證,所以我的舊代碼不能正常工作創建一個Android應用程序。如何在android中使用Digest身份驗證?
應該做怎樣更改使用Digest
認證?
我的代碼如下:
private boolean authenticateUser()
{
try
{
String url_str = "http://serverweb.com/checkauthentication.php";
HttpPost post = new HttpPost(url_str);
Log.v("AUTHENTICATION URL = ", url_str);
post.addHeader("Authorization","Basic "+getCredentials());
ResponseHandler<String> responseHandler=new BasicResponseHandler();
String response_body = client.execute(post, responseHandler);
Log.v("SERVER RESPONSE DATA = ", response_body);
XMLDataParser.parseXML(XMLDataParser.USER_INFORMATION_PARSER_CODE, response_body);
List<Cookie> cookies = client.getCookieStore().getCookies();
if (!cookies.isEmpty())
{
for (int i = 0; i < cookies.size(); i++)
{
XMLData.cookie = cookies.get(i);
}
}
return true;
}
catch (MalformedURLException mue)
{
Log.i("MalformedURLException", " "+mue.getMessage());
displayDialog("User Does Not exist");
return false;
}
catch (IOException ioe)
{
Log.i("IOException", " "+ioe.getMessage());
displayDialog("User Does Not exist");
return false;
}
catch (Exception e)
{
Log.i("Exception", " "+e.getMessage());
displayDialog("Error");
return false;
}
}
private String getCredentials()
{
String u=edit_username.getText().toString();
String p=edit_password.getText().toString();
Log.v("USER NAME = ",u);
Log.v("PASSWORD = ",p);
return(Base64.encodeBytes((u+":"+p).getBytes()));
}
您的網址不工作 –
@scorpio此URL是不正確的。 – AB1209