W jaki sposób mogę POST przy użyciu języka Java i dołączyć parametry i treść żądania surowego?

Komunikuję się z usługą internetową, która oczekuje parametru POST, a także oczekuję treści żądania. Potwierdziłem, że takie żądanie POST można wykonać za pomocą posiadanej przeze mnie konsoli REST, ale nie mogę wykonać takiego żądania w Javie przy użyciu bibliotek Apache.

W poniższym kodzie jestem w stanie POST do usługi internetowej i poprawnie odbiera zawartość zmiennej raw_body. Jeśli odkomentuję pierwszą z dwóch skomentowanych linii, usługa internetowa otrzyma parametr „fname”, ale nie otrzymuje już treści 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);

Jak mogę przesłać zarówno parametr, jak i ciało?

questionAnswers(2)

yourAnswerToTheQuestion