Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Enviar requisição do Postman para o webservice

Não estou conseguindo enviar o corpo da requisição para meu webservice no formato XML sem que o nome das classes estejam com qualified name. Já tratei a saída do XML do meu webservice ao acessar http://localhost:8080/carrinhos/1 conforme mostra abaixo e está tudo ok:

public String toXML() {
        XStream xstream = new XStream(new DomDriver());
        //xstream.autodetectAnnotations(true); //retirar a qualified name das tags caso tenha @XStreamAlias("")
        //nos atributos da classe
        //xstream.setMode(XStream.NO_REFERENCES);

        //retirar a qualified name das tags sem precisar colocar anotações @XStreamAlias("")
        xstream.alias("carrinho", Carrinho.class);  
        xstream.alias("Produto", Produto.class);
        return xstream.toXML(this);
    }

Porém, para enviar um POST, as tags do meu XML devem estar desta forma:

<br.com.alura.loja.modelo.Carrinho>
  <produtos>
    <br.com.alura.loja.modelo.Produto>
continuação...

Quando, na verdade, eu gostaria de fazer o put desta forma:

<carrinho>
  <produtos>
    <produto>
Continuação...

Erro do postman: Status: 500 carrinho

1 resposta
solução!

Consegui pessoal..

Segue o tratamento realizado na classe CarrinhoResource:

@POST
    @Produces(MediaType.APPLICATION_XML)
    public String adiciona(String conteudo) {
        Carrinho carrinho = new Carrinho();

        XStream xstream = new XStream(new DomDriver());
        xstream.alias("carrinho", Carrinho.class);  
        xstream.alias("produtos", Carrinho.class);
        xstream.alias("produto", Produto.class);    

        carrinho = (Carrinho) xstream.fromXML(conteudo);
        new CarrinhoDAO().adiciona(carrinho);
        return "<status>sucesso</status>";
    }