[RESOLVIDO] VRaptor + JSON + HTTPClient

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!

opa blz snaketi, posta a stack pra gente

abrasss

[quote=renanreismartins]opa blz snaketi, posta a stack pra gente

abrasss[/quote]

Ola renanreismartins!

Segue a stack, mas é eu mesmo gero ela quando retorna qualquer status (getStatusCode()) diferente de 201 (ou 200).

java.lang.RuntimeException: Failed : HTTP error code : 500
	at br.com.teste.TestRequest.main(TestRequest.java:31)

precisa da stack do servidor que deu o erro 500, não do cliente.

Olhando a stack do servidor achei o problema. Faltava o jettison…

Obrigado!

java.lang.ClassNotFoundException: org.codehaus.jettison.mapped.Configuration
	at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1711)
	at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1556)
	at com.thoughtworks.xstream.io.json.JettisonMappedXmlDriver.<init>(JettisonMappedXmlDriver.java:48)
	at br.com.caelum.vraptor.deserialization.JsonDeserializer.getHierarchicalStreamDriver(JsonDeserializer.java:103)