Authentifizierungsfehler bei der Verwendung von HttpPost mit DefaultHttpClient auf Android
Ich in ein seltsames problem mit HttpClient. Ich bin mit einem DefaultHttpClient() mit HttpPost. Ich war mit HttpGet mit 100% Erfolg, aber jetzt versuchen zu wechseln HttpPost als der REST-API, die ich verwende, will POST-Parameter eher als BEKOMMEN. (Nur für einige API-Aufrufe, aber so weiß ich, dass die Anrufe waren in Ordnung arbeiten, so ist es nicht ein Fehler von der API).
Auch, ich habe versucht, mit HttpPost auf ein einfaches php-Skript, das ich schrieb, das sieht für einen POST-parameter 'var' und hallt es auf dem Bildschirm, übergeben Sie diese Parameter wie folgt geklappt:
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);
...
Das problem ist, dass, wenn ich versuchte, Sie und das gleiche tun, rufen Sie die API - (aber mit den params geändert werden, um den API-params natürlich), bekomme ich die folgende Fehlermeldung:
Authentication error: Unable to respond to any of these challenges: {}
Die Seite, ich bin fordert, ist eine HTTPS-Seite, könnte dies das problem sein?
Aber tun die gleiche Art von POST-Anforderung an eine rohe HTTP-Seite auf die API gibt den gleichen Fehler, es sei denn ich kommentiere die StringEntity Teil und dann läuft er (aber xml zurückgibt und ich möchte ein parameter übergeben zu verlangen, die Daten im JSON-Format).
Dies scheint wie ein wirklich eigenartiges problem (nicht-https-Teil), konnte aber nicht wirklich finden jede Hilfe zu diesem problem, also sorry, wenn die Antwort ist da draußen.
Irgendwelche Ideen?
Vielen Dank im Voraus,
Infinitifzz
EDIT: Okay, ich bin nirgends bekommen, so dass ich dachte, wenn ich leitete Sie an die API könnte es etwas Licht, es ist die 8Tracks-API und wie Sie sehen können, die Sie brauchen, um passieren eine dev-key (api_key) für alle Anforderungen und ich das Teil bin ich stecken auf https anmelden eines Benutzers mit: http://www.8tracks.com/sessions.xml" Teil.
Hoffe, das hilft irgendwie, weil ich bin am Ende einer Sackgasse.
Dank,
Infinitifizz
Ich habe nur die url als Beispiel, aber ja, es sollte. Aber wie gesagt, ich versuchte, HttpPost, meine eigenen Skript, welches in Ordnung war und wenn ich versuchte, HttpPost eine nicht-https-Teil der api, wie in Ihrem Beispiel genannt, um eine http-Seite nicht https, ich bekam nur die Fehlermeldung, wenn ich an die nameValuePairs, wenn ich nicht ich habe nicht die Authentifizierung Fehler.
Können Sie uns zeigen Ihre HttpClient-Konstruktor?
Es ist nur HttpClient httpClient = new DefaultHttpClient(); Aber ich habe versucht, es für SSL mit dem code hier: thinkandroid.wordpress.com/2009/12/31/... Aber ich habe immer noch den gleichen Fehler.
InformationsquelleAutor Infiniti Fizz | 2011-05-24
Du musst angemeldet sein, um einen Kommentar abzugeben.
Diese Fehlermeldung bedeutet, dass der server antwortete mit
401 (Unauthorized)
status-code, aber versäumt, eine einzige auth Herausforderung (WWW-Authenticate
header), so dass es unmöglich für HttpClient, um automatisch wieder aus dem Authentifizierungsfehler.Höchstwahrscheinlich Anwendung erwartet wird, dass einige weichen von Anmeldeinformationen in der HTML-form umschlossen, die in der HTTP-POST-request.
InformationsquelleAutor oleg
Haben Sie nicht zu erklären, port und Protokoll? Ich bin nur swagging dieser code also bitte nicht böse sein wenn es nicht sofort ordnungsgemäß kompiliert. Auch habe ich in der Regel liefern UsernamePasswordCredentials zu meinem B. setCredentials() aber ich glaube, es ist das gleiche.
Mehr Infos über B. setCredentials hier.
Cool, lass es mich wissen.
Hmm das scheint nicht zu funktionieren, aber danke für den Versuch. Ich glaube, ich werde den Kontakt der API-Autoren und sehen, was Sie vorschlagen. Dank anwyay.
Tut mir Leid, das zu hören. Ich sehe, Sie veröffentlicht die API, die offensichtlich zeigt, https unterstützt, so dass ich nicht sicher bin, was zu sagen. Ich baute eine Java-Bibliothek, mit der Benutzer eine Verbindung zur CouchDB-Datenbanken über http oder https verwendet viele der gleichen Konzepte. Wenn es hilft, können Sie stöbern durch es hier.
InformationsquelleAutor Ryan
Hier ist, wie ich landete mit ähnlichen problem:
Danke an Ryan für die richtige Richtung.
InformationsquelleAutor ernazm
Nicht angeben Callback URL für meine Twitter-App führte zu dem gleichen Fehler bei mir:
Festlegen einer callback-URL auf Twitter das problem behoben
InformationsquelleAutor Sarp Centel