2016-04-01 9 views
0

ich zu einer URL eine HTTP POST-Anforderung machte mit Apache Httpclient 3.1, wo ich eine JSON Anforderungsentität bin vorbei und einige Parameter wie so ..Druck aus der Nutzlast für einen Apache nennen Httpclient PostMethod

HttpMethod method = new PostMethod("https://starfleet.reliant/commandConsole") 
    // assume there is already a varaible json which has valid JSON in it 
    StringRequestEntity requestEntity = new StringRequestEntity(json.toString(), "application/json", "UTF-8") 
    method.setRequestEntity(requestEntity); 
    method.addParameter("format","json"); 
    method.addParameter("prefixCode","16309"); 

Ist gibt es eine Möglichkeit, wie die gesamte Payload aussieht (einschließlich der JSON Request Entity und der Parameter)? Mit anderen Worten, ich möchte genau sehen, was auf dem Server gepostet wird.

Wenn ich nur tun ...

println("Sending this ${method.toString()}") 

Das gerade druckt ...

Sending this [email protected] 

natürlich das ist nicht das, was ich will.

+0

PostMethod erweitern und Ihren eigenen toString() hinzufügen –

+0

@ Joseph, es muss doch einen einfacheren Weg geben! – AbuMariam

Antwort

0

Für Httpclient 3x:

versuchen, ein Objekt Mapper, wie dies für requestentity Verwendung:

ObjectMapper mapper = new ObjectMapper(); 
System.out.println(mapper.writeValueAsString(requestEntity)); 

Abhängigkeit:

<dependency> 
     <groupId>com.fasterxml.jackson.core</groupId> 
     <artifactId>jackson-databind</artifactId> 
     <version>2.6.3</version> 
</dependency> 

Für Httpclient 4x +: ausprobieren Überprüfung EntityUtils von Apache (documented here)

Es so etwas wie dieses wird

String str = EntityUtils.toString(method.getRequestEntity()); 
System.out.println(str); 
+0

Danke für den Vorschlag, aber ich denke, das funktioniert nur mit Apache httpclient 4.0+, aber ich bin mit 3 stecken und es ist ein Schmerz zu aktualisieren. – AbuMariam

+0

Korrekt .. es lohnt sich upgraded..updated answer..it wird Ihre Anfrage Entität im String-Format wie json..eg: '{" Inhalt ":" {\ "a \": \ "b \"} , "Zeichensatz": "UTF-8", "contentType": "application/json; charset = UTF-8", "contentLength": 9, "wiederholbar": true} ' –