¿Cómo puedo hacer POST utilizando Java e incluir parámetros y un cuerpo de solicitud sin procesar?

Me estoy comunicando con un servicio web que espera un parámetro POST y también espero un cuerpo de solicitud. He confirmado que dicha solicitud POST se puede realizar utilizando una consola REST que tengo, pero no puedo realizar dicha solicitud en Java utilizando las bibliotecas de Apache.

En el código que aparece a continuación, puedo enviar un correo electrónico al servicio web y este recibe correctamente el contenido de la variable raw_body. Si elimino el comentario de la primera de las dos líneas comentadas, el servicio web recibe el parámetro "fname", pero ya no recibe el cuerpo de la 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);

¿Cómo puedo transmitir tanto el parámetro como el cuerpo?

Respuestas a la pregunta(2)

Su respuesta a la pregunta