2016-06-06 2 views
2

Eine Client-Software versucht, auf meinen Spring-MVC Rest-Server zuzugreifen, aber es wird jedes Mal eine 400 (schlechte Anfrage) Antwort angezeigt. Ich weiß, dass mein Server in Ordnung ist (er wird von vielen anderen Clients verwendet), aber ich kann die Client-Anwendung nicht debuggen, sodass ich nicht sehen kann, was sie sendet.Wie kann ich sehen, dass der JSON vom Client kommt, wenn Sie Spring-MVC verwenden?

Gibt es eine Möglichkeit für mich zu sehen, was JSON ich empfange, bevor Spring versucht, es in eine Entität zu konvertieren und fehlschlägt? Es ist in Ordnung, wenn ich dies nur zum Debugging-Zeitpunkt tun kann, ich muss nur in der Lage sein, die Entwickler dieser Anwendung zu unterstützen.

Nur für den Fall, hier ist die feder Mvc Controller-Methode:

@Named 
@RequestMapping(value = "/taskmanager/task") 
public class TaskManagerTaskRest { 
    @RequestMapping(value = "", method = RequestMethod.POST) 
    @ResponseBody 
    public void createTask(@RequestBody Task task, HttpServletRequest request, 
      HttpServletResponse response) throws CalabacinException { 
     // This code never gets executed because the Task json is invalid, but I don't know how I could see it. 
     ... 
     ... 
    } 
} 

Antwort

1

können Sie erstellen und eine AbstractRequestLoggingFilter Filterimplementierung verwenden und bedingt die relevanten Teile des Antrags anmelden. Sie sollten ContentCachingRequestWrapper verwenden, um die Anforderung zu umbrechen.

+0

Gute Antwort. Ich werde in der Lage sein zu sehen, was ich erhalte und es protokollieren (oder debuggen), was ich gefragt habe, aber für diejenigen von Ihnen, die dies versuchen, wenn Sie den Anfragetext in einem Filter lesen, werden Sie den InputStream von verbrauchen die Anfrage; und als Folge wird Spring IMMER fehlschlagen, wenn es versucht, den jSon dieses InputStream erneut zu analysieren, um es in eine Entity umzuwandeln. – Calabacin

+1

Nicht, wenn Sie die Anfrage umbrechen - ich habe meine Antwort bearbeitet –

+0

Ich habe diese Antwort als gültig gewählt, weil es mir sagt, wie ich programmatisch tun soll, was ich will, und das sind nützliche Informationen. Auch Fiddler hat nicht einmal für mich gearbeitet; Ich musste Wireshark verwenden – Calabacin

3

Versuchen Sie Fiddler zu verwenden. Es wird Ihnen helfen, HTTP-Anfragen/-Antworten abzufangen. Sie können Ihren JSON sehen.

+1

Ja, Sie können Fiddler als Reverse Proxy verwenden, http://docs.telerik.com/fiddler/Configure-Fiddler/Tasks/UseFiddlerAsReverseProxy. – Irshu

+0

Dies ist meiner Meinung nach die beste Lösung. Es erfordert keine Programmierung oder Manipulation, schauen Sie einfach, wie die Verbindung hergestellt wird und sehen Sie alles, was Sie brauchen. – Calabacin

+1

Dann handelt es sich bei dieser Frage nicht um Spring MVC, sondern um eine allgemeine Frage zu Proxy-Anforderungen. –