2011-03-05 3 views
1

je sais que je ne suis pas premier, mais j'ai fait une recherche et n'a pas trouvé de solution. Tout d'abord je dois faire ceci:erreur "401 non autorisée" en faisant http post (cloné à partir de commande curl) dans Android

curl -user1:pass1 - X POST -d"data" http://www.mysite.com/pushes.xml 

Mais je ne veux pas utiliser lib boucle pour cette demande facile, beacuse je pense que la solution doit être facile et indolore. Je l'ai trouvé ce http login example, et a essayé de l'utiliser avec

nvps.add(new BasicNameValuePair("username", "user1")); 
    nvps.add(new BasicNameValuePair("password", "pass1")); 

Mais je pense que les balises « nom d'utilisateur » et « mot de passe » sont mal ... et je ne pas les obtenir .. donc je vous demande à propos de l'aide. S'il vous plaît aidez-moi à comprendre ce que je dois faire pour obtenir ce login. Les remerciements seront garantis :)

P.S. dans la réponse, je reçois msg "HTTP Basic: Accès refusé". Mais la commande curl fonctionne bien ...

Répondre

0

si serveur renvoie 401 vous devez passer par l'intermédiaire des titres de compétences spéciales ou authentifiant paramètres en-tête:

httpPost.addHeader(RestHelper.AUTHORIZATION_HEADER, RestHelper.AUTHORIZATION_HEADER_VALUE); 

where 

    AUTHORIZATION_HEADER_VALUE = "Basic " + Base64Encoder.encode ("user:password"); 
    AUTHORIZATION_HEADER = "Authorization"; 

ou

httpClient.getCredentialsProvider().setCredentials(
      new AuthScope("server.com", 443, AuthScope.ANY_SCHEME), 
      new UsernamePasswordCredentials(LOGIN_VALUE, PASSWORD)); 
0

Vérifiez l'API que vous utilisez. J'ai eu le même problème jusqu'à ce que je l'ai vérifié et il était "utilisateur", pas "nom d'utilisateur".
Changez donc nvps.add(new BasicNameValuePair("username", "user1"));
en nvps.add(new BasicNameValuePair("user", "user1")); et faites un essai.

Questions connexes