ClientProtocolException in httpClient.execute(httpget, responseHandler)
Ich bin mit dem folgenden code, um xml-Anfrage von einem web-server:
HttpClient httpclient = new DefaultHttpClient()
try
{
HttpGet httpget = new HttpGet("http://63.255.173.242/get_public_tbl.cgi?A=1");
ResponseHandler responseHandler = new BasicResponseHandler();
String responseBody = httpclient.execute(httpget, responseHandler);
System.out.println(responseBody);
}
catch (ClientProtocolException e)
{
e.printStackTrace();
}
catch (IOException e)
{
e.printStackTrace();
}
finally
{
httpclient.getConnectionManager().shutdown();
}
Bekomme ich eine clientProtocolException, wenn ich rufe httpclient.execute(httpget, responseHandler). Die url funktioniert Prima in einem web-browser, gibt es den xml-Code und der browser zeigt es.
Irgendwelche Ideen, warum, ich würde eine clientProtocolException und noch den browser handhabt es einfach gut?
Edit 1:
Blick auf das Protokoll Ausnahme der detail-Meldung: "Der server reagiert nicht mit einer gültigen HTTP-Antwort". Ich kann nicht ändern Sie den web-server, ich bin zu schlagen. Gibt es eine Möglichkeit, dies zu ignorieren und nur den Zugriff auf die Antwort?
Edit 2:
Habe ich festgestellt, dass der server nicht senden wieder einen vollständigen header. Gibt es eine Möglichkeit, den Inhalt der Antwort selbst, wenn eine kaputte header zurückgegeben wird?
Edit 3: ich bearbeitet die ip-Adresse die echte IP-Adresse, die ich bin, zu schlagen. Jede Hilfe wäre sehr geschätzt werden.
InformationsquelleAutor Kevin Westwood | 2012-10-02
Du musst angemeldet sein, um einen Kommentar abzugeben.
Als dein code scheint korrekt zu sein, haben Sie, um herauszufinden: Ist dies der client ist Schuld (ungültige Anforderung), oder der server ist Schuld (ungültige Antwort). Um das zu tun, verwenden Sie eine http-trace-utitlity und vergleichen Sie die Anfragen eines Browsers, die von Ihrem client. Sie werden auch in der Lage, um zu sehen, die raw-Antwort vom server, wenn es eine gibt. Wenn Sie können nicht, es herauszufinden, dann fügen Sie die raw-Anfrage und Antwort auf Ihre Frage, und jemand könnte in der Lage sein zu helfen.
Ich fand, dass der server nicht sendet, ein header überhaupt. Die beste Lösung war, direkt die Kommunikation mit sockets.
was Sie haben schließlich mit diesem problem , ich bin immer das gleiche problem?
InformationsquelleAutor Eugene Beresovsky
Ich getestet habe den code mit meiner ip-Adresse. Es gibt keine Fehler im code. Ich habe gerade
ResponseHandler
zuBasicResponseHandler
.überprüfen Sie diese
InformationsquelleAutor Ram kiran
Sie könnten versuchen, fügen Sie Ihre eigene Antwort interceptor, wo Sie können hinzufügen oder löschen von Kopfzeilen, oder drucken Sie einige debug-info
U kann hinzufügen
new HttpRequestInterceptor
mit der Methodevoid process(HttpRequest request, HttpContext context)
gleichen Weg, dann ausdrucken und vergleichen-Header der Anfrage geht, die vom browser und von der ur-code. Kann server-w8 "Accept-Encoding", "gzip" - header oder etwas anderesInformationsquelleAutor lanwen
Überprüfen Sie Ihre überschriften, die Sie in den client erneut zu überprüfen Schlüssel-und Wert-Header. In meinem Fall war ich mit "csrf" param anstelle von "Cookie".
InformationsquelleAutor Rahul Jain
Ich Stand vor einem ähnlichen Problem, ClientProtocolException
Anscheinend ist der server nicht das Ziel haben, die web-service-SSL
so war es falsch "SSL-Konfiguration",
Zugrunde liegenden Fehler war:
Nach dem hinzufügen der truststore der java diese Fehlermeldung verschwunden.
hoffe, es hilft jemand.
InformationsquelleAutor user648026