Ответ 1
Вам нужно создать объект HttpHost
и HttpContext
с необходимыми учетными данными и дать ему метод execute.
Это пример кода, в котором ваша аутентификация не зависит от бэкэнд-аутентификации. http-клиент андроида будет заботиться о преобразовании его в соответствующий формат. Проверьте этот пример кода, это только для вашей справки и не будет использоваться непосредственно в вашем коде.:)
Этот код находится в вашей деятельности:
@Override
public void onResume(){
super.onResume();
AsyncTask<String, Void, Void> httpTask = new TestHttpThread();
httpTask.execute("test_url","test_user","test_password");
}
Пример AsyncActivity
:
private class TestHttpThread extends AsyncTask<String, Void, Void>{
@Override
protected Void doInBackground(String... params) {
if(params.length > 0){
String url = params[0];
String username = params[1];
String password = params[2];
try {
AndroidHttpClient httpClient = AndroidHttpClient.newInstance("test user agent");
URL urlObj = new URL(url);
HttpHost host = new HttpHost(urlObj.getHost(), urlObj.getPort(), urlObj.getProtocol());
AuthScope scope = new AuthScope(urlObj.getHost(), urlObj.getPort());
UsernamePasswordCredentials creds = new UsernamePasswordCredentials(username, password);
CredentialsProvider cp = new BasicCredentialsProvider();
cp.setCredentials(scope, creds);
HttpContext credContext = new BasicHttpContext();
credContext.setAttribute(ClientContext.CREDS_PROVIDER, cp);
HttpGet job = new HttpGet(url);
HttpResponse response = httpClient.execute(host,job,credContext);
StatusLine status = response.getStatusLine();
Log.d(TestActivity.TEST_TAG, status.toString());
httpClient.close();
}
catch(Exception e){
e.printStackTrace();
}
}
return null;
}
}