Wie mache ich eine JSON Post Anfrage im Ring?

8

Ich benutze Peridot - Ссылка , um meine Ring-Anwendung zu testen, und es funktioniert gut, bis ich versuche, eine Post-Anfrage zu verspotten mit json Daten:

%Vor%

gibt IOException: stream closed .

Gibt es einen besseren Weg, dies zu tun?

    
zcaudate 11.06.2013, 01:40
quelle

2 Antworten

9

tldr:

%Vor%

Wenn Peridot eine Anforderungszuordnung generiert, wird standardmäßig application/x-www-form-urlencoded für den Inhaltstyp für eine :post -Anforderung verwendet. Mit der angegebenen App wrap-params (die von compojure.handler/site eingeschlossen wird) wird versucht, die :body zu lesen, um alle form-urlencodierten Parameter zu analysieren. Dann versucht json-post , :body erneut zu lesen. % Co_de% s sind jedoch so ausgelegt, dass sie einmal gelesen werden, und dies verursacht die Ausnahme.

Es gibt grundsätzlich zwei Möglichkeiten, das Problem zu lösen:

  1. Entfernen Sie InputStream .
  2. Fügen Sie der Anfrage einen Inhaltstyp hinzu (wie in der tldr)
xeqi 11.06.2013, 03:01
quelle
4
%Vor%

Sie müssen .getBytes nicht aufrufen, übergeben Sie einfach json mit :body parameter.

    
user1338062 22.05.2015 06:05
quelle

Tags und Links