Erreur d'authentification lors de l'utilisation de HttpPost avec DefaultHttpClient sur Android
Je suis confronté à un problème étrange à l'aide de HttpClient. Je suis à l'aide d'un DefaultHttpClient() avec HttpPost. J'ai été en utilisant HttpGet avec 100% de réussite, mais maintenant, essayant de passer HttpPost que le RESTE de l'API que j'utilise veut paramètres POST plutôt que d'OBTENIR. (Seulement pour certains appels d'API bien donc je sais que le REÇOIS des appels fonctionnent très bien donc c'est pas un défaut de l'API).
Aussi, j'ai essayé d'utiliser HttpPost sur un simple script php que j'ai écrit qui recherche un paramètre POST 'var' et des échos à l'écran, passant ces paramètres comme suit a bien fonctionné:
List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
postMethod = new HttpPost("http://www.examplewebsite.com");
nameValuePairs.add(new BasicNameValuePair("var", "lol"));
try {
postMethod.setEntity(new UrlEncodedFormEntity(nameValuePairs));
response = httpClient.execute(postMethod, responseHandler);
Log.i("RESTMethod", response);
...
Le problème est que lorsque j'ai essayé et faire le même appel à l'API (mais avec les paramètres modifiés à l'API params évidemment), je reçois le message d'erreur suivant:
Authentication error: Unable to respond to any of these challenges: {}
La page que je suis requérant est une page HTTPS, cela pourrait être le problème?
Mais faire le même type de POSTE demande à un raw HTTP de la page sur l'API donne la même erreur, à moins que j'en commentaire le StringEntity partie et puis il fonctionne (mais renvoie xml et je veux passer un paramètre à la demande, les données en JSON).
Cela semble vraiment comme un problème étrange (le non-https partie) mais je ne pouvais pas vraiment trouver l'aide sur ce problème, donc désolé si la réponse est là.
Des idées?
Merci d'avance,
Infinitifzz
EDIT: Bon je suis de nulle part alors j'ai pensé que si je vous à l'API, il peut jeter un peu de lumière, c'est la 8Tracks API et comme vous pouvez le voir vous avez besoin pour passer un dev clé (api_key) pour toutes les demandes et je la partie, je suis coincé sur l'utilisation de https pour se connecter à un utilisateur, avec: http://www.8tracks.com/sessions.xml".
Espère que cette aide en quelque sorte parce que je suis dans une impasse.
Merci,
Infinitifizz
source d'informationauteur Infiniti Fizz
Vous devez vous connecter pour publier un commentaire.
Ce message d'erreur signifie que le serveur a répondu avec
401 (Unauthorized)
code d'état, mais a échoué à fournir une seule auth défi (WWW-Authenticate
en-tête) ce qui rend impossible pour HttpClient pour récupérer automatiquement de l'échec de l'authentification.Les plus susceptibles d'application s'attend à un peu mou des informations d'identification dans le code HTML ci-joint dans la requête HTTP POST.
Vous n'avez pas à déclarer le port et le protocole? Je suis juste swagging ce code merci donc de ne pas être bouleversé si elle n'est pas immédiatement compiler correctement. Aussi, j'ai l'habitude de fournir un UsernamePasswordCredentials à mon setCredentials() mais j'imagine que c'est la même chose.
Plus d'infos sur setCredentials ici.
Voici comment je me suis retrouvé avec le même problème:
Merci à Ryan pour la bonne direction.
Ne pas spécifier de URL de Callback pour mon Application Twitter, qui a abouti à la même erreur pour moi:
Paramètre une URL de callback sur Twitter résolu le problème