我正在与一个需要 POST 参数并且还需要请求正文的 Web 服务进行通信。我已经确认可以使用我拥有的 REST 控制台完成这样的 POST 请求,但是我无法使用 Apache 库在 Java 中发出这样的请求。
在下面的代码中,我能够 POST 到 Web 服务,并且它正确接收变量 raw_body 的内容。如果我取消注释两行中的第一行,Web 服务会收到“fname”参数,但它不再收到 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);
如何同时传输参数和正文?