Ich habe ein seltsames Problem mit einem kleinen Restlet-Service, den ich als Übung bauen. Die Anwendung soll mit einigem XML (specifically TwiML, wie es für Twilio gemeint ist) auf einem HTTP-POST antworten, und es funktionierte gut für Standalone-Anfragen. Auf Anfrage von Twilio wird die Antwort jedoch nie abgeschlossen und das Zeitlimit überschritten. Nachdem ich den Traffic, der von Twilio kommt, mit dem, der funktioniert, verglichen habe (mit einem gefälschten HTML-Formular), isolierte ich das Problem auf den Header "Connection: close" und konnte es nur mit der curl-Befehlszeile reproduzieren. Hier ist die Anforderung, das funktioniert:Fehler mit HTTP-Verbindung: Schließen Header
curl -i -H 'Connection: keep-alive' -X POST -d "name=value" http://localhost:8020/hello
und hier ist derjenige, der gerade hängt:
curl -i -H 'Connection: close' -X POST -d "name=value" http://localhost:8020/hello
Wenn ich den Server dann curl sage „(52) Leere Antwort vom Server“ zu töten. Hier ist der Code, den ich in der ServerResource benutze:
Ist etwas offensichtlich falsch mit dem, was ich hier mache? Ich benutze restlet-2.0, versuchte es aber auch mit 2.1m1 mit dem gleichen Ergebnis. Ich würde mich sehr über eine schnelle Antwort freuen, da ich eine Frist habe, um die Übung zu beenden.
Danke für das Teilen. Heißt das, Restlet funktionierte nie gut mit einer Verbindung, die den Header "Connection: close" hat (was ein bedeutender Fehler wäre)? – haridsv
Nun, es scheint ein Artefakt des Standard-Restlet-Servers zu sein, der im Lieferumfang von Restlet enthalten ist. Ich würde annehmen, dass dieses Problem nicht auftritt, wenn Sie Ihr Restlet in einem anderen Container (Jetty zum Beispiel) bereitstellen. Aber einverstanden, es ist definitiv ein Fehler. – Joey
Es ist jetzt ein offizieller Fehler http://restlet.tigris.org/issues/show_bug.cgi?id=1191 – Joey