Pessoal,
não estou conseguindo fazer funcionar uma requisição a um serviço do VRaptor utilizando o Apache HTTPClient.
Controller:
@Path("/testejson")
@Consumes("application/json")
public void consomeJSON(Produto produto) {
System.out.println(produto);
result.use(Results.json()).from(produto).serialize();
}
Pojo:
public class Produto implements Serializable{
private long idProduto;
private String descricao;
// getters / setters
}
Chamada pelo HttpClient:
public static void main(String[] args) {
try {
DefaultHttpClient httpClient = new DefaultHttpClient();
HttpPost postRequest = new HttpPost("http://localhost:8080/bs/testejson");
StringEntity input = new StringEntity("{ \"produto\": {\"idProduto\": 1,\"descricao\": \"teste\"}}", ContentType.APPLICATION_JSON);
postRequest.setEntity(input);
HttpResponse response = httpClient.execute(postRequest);
if (response.getStatusLine().getStatusCode() != 201) {
throw new RuntimeException("Failed : HTTP error code : " +
response.getStatusLine().getStatusCode());
}
BufferedReader br = new BufferedReader(
new InputStreamReader((response.getEntity().getContent())));
String output;
System.out.println("Output from Server .... \n");
while ((output = br.readLine()) != null) {
System.out.println(output);
}
httpClient.getConnectionManager().shutdown();
} catch (Exception e) {
e.printStackTrace(System.err);
}
}
Retorna sempre “HTTP error code : 500”
Grato pela atenção!