Проверка подлинности Android HttpClient всегда возвращает код 401 - PullRequest
5 голосов
/ 12 марта 2011

Я пытаюсь опубликовать счет игрока онлайн, используя HTTP-аутентификацию, но ответ всегда 401 (неавторизован), хотя я почти уверен, что имя пользователя и пароль верны.Что я делаю не так?

DefaultHttpClient client = new DefaultHttpClient();
Credentials creds = new UsernamePasswordCredentials("user", "passsword");
client.getCredentialsProvider().setCredentials(new AuthScope("http://myurl.com/score.php", 80), creds);

try {
    HttpPost post = new HttpPost("http://myurl.com/score.php");

    List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(3);   
    nameValuePairs.add(new BasicNameValuePair("score", points));
    nameValuePairs.add(new BasicNameValuePair("name", name));
    post.setEntity(new UrlEncodedFormEntity(nameValuePairs));
    HttpResponse response = client.execute(post);
    final int statusCode = response.getStatusLine().getStatusCode();
    if (statusCode != HttpStatus.SC_OK) {
        throw new Exception();
    }

} catch (UnsupportedEncodingException e) {
    //
} catch (IOException e) {
    //
} catch (Exception e) {
    //
}

Что не так с моим кодом?

Ответы [ 2 ]

12 голосов
/ 12 марта 2011

Я решил проблему. Я использую

new AuthScope(AuthScope.ANY_HOST, AuthScope.ANY_PORT) // works

вместо предыдущего

new AuthScope("http://myurl.com/score.php", 80) // error
0 голосов
/ 16 апреля 2014

Попробуйте использовать:

new AuthScope("myurl.com", 80);
...