title: How can I POST using Java and include parameters and a raw request body?
body: <p>I am communicating with a web service that expects a POST parameter and also expect Request body.  I have confirmed that such a POST request can be done using a REST Console I have, but I am unable to make such a request in Java using Apache libraries.</p>
  
  <p>In the code below, I am able to POST to the web service, and it correctly receives the contents of the variable raw_body.  If I uncomment the first of the two commented lines, the web service receives the "fname" parameter, but it no longer receives the body of the POST.</p>
  
  <pre><code>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);
  </code></pre>
  
  <p>How can I transmit both the parameter and the body?</p>