2011-03-12 6 views
5

Estoy tratando de publicar la puntuación del jugador en línea utilizando la autenticación HTTP, pero la respuesta es siempre 401 (no autorizada), aunque estoy bastante seguro de que el nombre de usuario y la contraseña son correctos. ¿Qué estoy haciendo mal?Android HttpClient authentication siempre devuelve el código 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) { 
    // 
} 

¿Qué pasa con mi código?

Respuesta

12

He resuelto el problema. Estoy usando

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

en lugar de la anterior

new AuthScope("http://myurl.com/score.php", 80) // error 
+0

Gran! Puede aceptar su propia respuesta a la pregunta para que aparezca como respondida :) –

+0

Gracias por publicar su solución. Esto me ayudó a resolver mi problema :-) –

+0

Lamentablemente, esta solución no funciona para las conexiones SSL. –

0

Trate de usar:

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

Intente proporcionar algunas explicaciones y/o enlaces con sus respuestas para explicar * por qué * su solución debería funcionar. – codeMagic

Cuestiones relacionadas