Komunikuję się z usługą sieciową, która oczekuje parametru POST, a także oczekuję treści żądania. Potwierdziłem, że takie żądanie POST można wykonać przy użyciu konsoli REST, którą mam, ale nie mogę wykonać takiego żądania w Javie przy użyciu bibliotek Apache.W jaki sposób mogę POST używać języka Java i dołączyć parametry oraz surową treść żądania?
W poniższym kodzie, jestem w stanie POST na usługę sieciową i poprawnie odbiera zawartość zmiennej raw_body. Jeśli odkomentuję pierwszą z dwóch skomentowanych linii, usługa internetowa otrzyma parametr "fname", ale nie będzie już odbierać 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 treść?
Ach, to jest idealne. setQueryString ** to dokładnie to, czego potrzebowałem. Twoje komentarze na ten temat, które nie są bardzo restful, a także, że prawdopodobnie powinna być prośba PUT są dobrze zrobione. Dziękuję za kierowanie mną we właściwym kierunku. –