приложение, которое я сейчас создаю, необходимо выполнить логин с именем пользователя и паролем. Я использую DefaultHttpClient для выполнения запроса и установки имени пользователя и пароля в качестве учетных данных. сервер ожидает htacces-login. Результат, который я получаю, - это не Logintoken, на который я надеялся. Вместо этого он возвращает Errormessage. Может ли кто-нибудь сказать мне, где я ошибся в своем коде? Большое вам спасибо за помощь! прВойти с HTTPS в защищенный каталог htaccess
private String httpLoginRequest() {
String loginToken = null;
String loginUrl = "https://somedomain.com/login";
DefaultHttpClient client = new DefaultHttpClient();
client.getCredentialsProvider().setCredentials(new AuthScope(AuthScope.ANY_HOST, AuthScope.ANY_PORT), new UsernamePasswordCredentials("username", "password"));
HttpResponse httpResponse;
HttpEntity entity;
try{
httpResponse = client.execute(request);
entity = httpResponse.getEntity();
if (entity != null) {
InputStream instream = entity.getContent();
loginToken = convertInputStreamToString(instream);
}
} catch (ClientProtocolException e) {
client.getConnectionManager().shutdown();
e.printStackTrace();
} catch (IOException e) {
client.getConnectionManager().shutdown();
e.printStackTrace();
}
return loginToken;
}
Спасибо, ребята так много для вашей помощи. Я наконец-то понял. Это было сочетание разных вещей: 1. Что вы не видите в коде выше (потому что я случайно удалил его), так это то, что запрос отправлен. наш api ожидает запроса на получение, хотя мне сказали иначе 2. Я положил учетные данные в неправильном месте. они должны быть установлены в HttpGet-Object, как в Exampe дается CommonsWare 3. я на самом деле должны кодировать учетные данные с base64 упомянутых Вами
вот код, который, наконец, работал для меня:
public String httpLoginRequest() {
String loginToken = null;
String loginUrl = "https://somedomain.com/login";
//
DefaultHttpClient client = new DefaultHttpClient();
HttpResponse httpResponse;
HttpEntity entity;
HttpGet request = new HttpGet(loginUrl);
request.addHeader("Authorization", "Basic " + Base64.encodeCredentials("username", "password"));
try{
httpResponse = client.execute(request);
entity = httpResponse.getEntity();
if (entity != null) {
InputStream instream = entity.getContent();
loginToken = convertInputStreamToString(instream);
Log.d(LOG_TAG, "Login Token: " + loginToken);
}
} catch (ClientProtocolException e) {
client.getConnectionManager().shutdown();
e.printStackTrace();
} catch (IOException e) {
client.getConnectionManager().shutdown();
e.printStackTrace();
}
return loginToken;
}
Когда я нахожу время, я попробую пример, приведенный в ответе, поскольку я смотрю намного больше, как то, что мне понадобится для некоторых других запросов в моем проекте.
Что ErrorMessage он возвращается? – Cristian
Если это базовая авторизация, я сам успешно настроил заголовок: http://github.com/commonsguy/cw-andtutorials/tree/master/15-HttpClient/Patchy/ – CommonsWare