Ich kommuniziere mit einem Web-Service, der einen POST-Parameter erwartet und auch Request-Body erwartet. Ich habe bestätigt, dass eine solche POST-Anfrage mit einer vorhandenen REST-Konsole durchgeführt werden kann, aber ich kann keine solche Anfrage in Java mit Apache-Bibliotheken stellen.Wie kann ich POST mithilfe von Java und Parameter und eine unformatierte Anfrage Körper einfügen?
Im folgenden Code kann ich POST an den Webdienst senden, und es empfängt korrekt den Inhalt der Variablen raw_body. Wenn ich die erste der beiden kommentierten Zeilen auskommentiere, erhält der Web-Service den Parameter "fname", aber er empfängt nicht mehr den Hauptteil des POST.
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.methods.PostMethod;
import org.apache.commons.httpclient.methods.RequestEntity;
...
HttpClient httpClient = new HttpClient();
String urlStr = "http://localhost:8080/MyRestWebService/save";
PostMethod method = new PostMethod(urlStr);
String raw_body = "This is a very long string, much too long to be just another parameter";
RequestEntity re = new StringRequestEntity(raw_body, "text/xml", "UTF-16");
//method.addParameter("fname", "test.txt");
//httpClient.getParams().setParameter("fname", "test.txt");
method.setRequestEntity(re);
Wie kann ich sowohl den Parameter als auch den Körper übertragen?
Ah, das ist perfekt. setQueryString ist ** genau ** was ich brauchte. Ihre Kommentare darüber, dass es nicht sehr erholsam ist und auch, dass es wahrscheinlich eine PUT-Anfrage sein sollte, sind gut getroffen. Danke, dass du mich in die richtige Richtung gelenkt hast. –