how to use Digest authentication in android?

Viewed 9096

I am creating an Android app where I am authenticating username/password through a server.Initially server was implementing Basic authentication so my code was working fine but now server has changed to Digest authentication so my old code is not working.

What changes should do make for using Digest authentication?

My code is as follows:

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()));
}
1 Answers
Related