package com.loopj.android.http.sample; import android.net.Uri; import android.os.Bundle; import android.widget.EditText; import com.loopj.android.http.AsyncHttpClient; import com.loopj.android.http.RequestHandle; import com.loopj.android.http.ResponseHandlerInterface; import cz.msebera.android.httpclient.Header; import cz.msebera.android.httpclient.HttpEntity; import cz.msebera.android.httpclient.auth.AuthScope; import cz.msebera.android.httpclient.auth.UsernamePasswordCredentials; public class DigestAuthSample extends GetSample { private EditText usernameField, passwordField; @Override public String getDefaultURL() { return PROTOCOL + "httpbin.org/digest-auth/auth/user/passwd2"; } @Override public int getSampleTitle() { return R.string.title_digest_auth; } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); usernameField = new EditText(this); passwordField = new EditText(this); usernameField.setHint("Username"); passwordField.setHint("Password"); usernameField.setText("user"); passwordField.setText("passwd2"); customFieldsLayout.addView(usernameField); customFieldsLayout.addView(passwordField); } @Override public RequestHandle executeSample(AsyncHttpClient client, String URL, Header[] headers, HttpEntity entity, ResponseHandlerInterface responseHandler) { setCredentials(client, URL); return client.get(this, URL, headers, null, responseHandler); } @Override public boolean isCancelButtonAllowed() { return true; } @Override public boolean isRequestHeadersAllowed() { return true; } @Override public boolean isRequestBodyAllowed() { return false; } private void setCredentials(AsyncHttpClient client, String URL) { Uri parsed = Uri.parse(URL); client.clearCredentialsProvider(); client.setCredentials( new AuthScope(parsed.getHost(), parsed.getPort() == -1 ? 80 : parsed.getPort()), new UsernamePasswordCredentials( usernameField.getText().toString(), passwordField.getText().toString() ) ); } }