4
respostas

Teste no cURL e JSON com jAXB

Olá,

Fiz alteração no métodos alterar do CarrinhosResource para trabalhar com JAXB e estou tentando testar com o CURL usando:

@Path("{id}/produtos/{idProduto}")
    @PUT
    @Consumes(MediaType.APPLICATION_XML)
    public Response alterarProduto(@PathParam("id") long id, @PathParam("idProduto") long idProduto, Produto produto){
        Carrinho carrinho = new CarrinhoDAO().busca(id);
        carrinho.troca(produto);
        return Response.ok().build();
    }
curl -v -X PUT -H "Content-Type: application/xml" -d "<produtos><preco>600.0</preco><id>3467</id><nome>Jogo de esporte</nome><quantidade>20</quantidade></produtos>" http://localhost:8080/carrinhos/1/produtos/3467

Entretanto, tenho a seguinte resposta:

*   Trying ::1...
* connect to ::1 port 8080 failed: Connection refused
*   Trying 127.0.0.1...
* Connected to localhost (127.0.0.1) port 8080 (#0)
> PUT /carrinhosjaxb/1/produtos/3467 HTTP/1.1
> User-Agent: curl/7.40.0-DEV
> Host: localhost:8080
> Accept: */*
> Content-Type: application/xml
> Content-Length: 108
>
* upload completely sent off: 108 out of 108 bytes
< HTTP/1.1 400 Bad Request
< Date: Wed, 02 Nov 2016 14:44:35 GMT
< Connection: close
< Content-Length: 0
<
* Closing connection 0

O que posso estar fazendo errado?

Uma outra dúvida é como posso usar o JAXB e trabalhar com JSON.

Desde já obrigada,

4 respostas

Parece que o servidor não está no ar. O Jaxb não suporta json ainda, isso está previsto na próxima versão do javaee.

Ah, mas só para deixar claro, o JAX-RS trabalha.. então se vc coloca que seu método produz json, o objeto vai ser serializado no formato correto.

Havia um erro na URI, segue o correto:

C:\Users\Aline>curl -v -X PUT -H "Content-Type: application/xml" -d "<produtos><preco>600.0</preco><id>3467</id><nome>Jogo de esporte</nome><quantidade>2</quantidade></produtos>" http://localhost:8080/carrinhosjaxb/1/produtos/3467
*   Trying ::1...
*   Trying 127.0.0.1...
* Connected to localhost (127.0.0.1) port 8080 (#0)
> PUT /carrinhosjaxb/1/produtos/3467 HTTP/1.1
> User-Agent: curl/7.40.0-DEV
> Host: localhost:8080
> Accept: */*
> Content-Type: application/xml
> Content-Length: 108
>
* upload completely sent off: 108 out of 108 bytes
< HTTP/1.1 400 Bad Request
< Date: Sat, 05 Nov 2016 10:23:15 GMT
< Connection: close
< Content-Length: 0
<
* Closing connection 0

O servidor ta retornando status 400. Isso indica que existe algum problema com os dados sendo enviados, no caso o xml. Esse xml que vc ta enviando, será que é o reflexo correto do mapeamento das suas classes? Vc vai precisar testar. Tenta fazer um código do jaxb que lê um xml e retorna o objeto que vc espera como argumento do método do seu resource... A tag pai é produtos mesmo?