Estou estudando a biblioteca HTTP Client/ HTTP Core para fazer requisições à uma aplicação que disponibiliza resources do VRaptor.
Consegui passar uma String e receber na aplicação que está no servidor:
HttpClient client = new DefaultHttpClient();
List<NameValuePair> formparams = new ArrayList<NameValuePair>();
formparams.add(new BasicNameValuePair("parametro", "teste"));
UrlEncodedFormEntity entity = new UrlEncodedFormEntity(formparams, "UTF-8");
HttpPost httppost = new HttpPost( endereco );
httppost.setEntity(entity);
client.execute(httppost);
Rafael, passar o objeto como parâmetro do POST não sei se dá. Mas você pode passar os atributos da classe como parâmetros do POST.
Por exemplo, se vc tem uma classe chamada Pessoa, que tem 2 atributos: nome e idade. Ficaria assim:
Pessoa p = new Pessoa("Rafael", 25);
HttpClient client = new HttpClient();
NameValuePair[] params = {
new NameValuePair("nome", p.getNome()),
new NameValuePair("idade", p.getIdade())
};
PostMethod method = new PostMethod(url);
method.setRequestBody(params);
method.getParams().setParameter(HttpMethodParams.RETRY_HANDLER,
new DefaultHttpMethodRetryHandler(3, false));
try {
int statusCode = client.executeMethod(method);
} catch (Exception e) {
logger.fatal(e.toString(), e);
throw e;
} finally {
method.releaseConnection();
}
Daí, quem for receber o POST, recupera os parâmetros separadamente e monta uma instância da classe Pessoa.