Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Http 400 Bad Request - Aula 14 - Projeto

Bom dia senhores

Ao efetuar o teste abaixo:

@Test
    public void acessaProjeto(){
        Client cliente = ClientBuilder.newClient();
        //Uri do servidor
        WebTarget target = cliente.target("http://localhost:8081");
        Projeto projeto = target.path("/projetos/1").request().get(Projeto.class);
        Assert.assertEquals(1L, projeto.getId(),0);
    }

na linha do target recebo o erro de bad request 400, estava debugando e o XML é gerado normalmente mas na comparação o código quebra.

Abaixo a Exception que é gerada:

Caused by: javax.xml.bind.UnmarshalException: unexpected element (uri:"", local:"br.com.alura.loja.modelo.Projeto"). Expected elements are <{}projeto>
    at com.sun.xml.internal.bind.v2.runtime.unmarshaller.UnmarshallingContext.handleEvent(Unknown Source)
    at com.sun.xml.internal.bind.v2.runtime.unmarshaller.Loader.reportError(Unknown Source)
    at com.sun.xml.internal.bind.v2.runtime.unmarshaller.Loader.reportError(Unknown Source)
    at com.sun.xml.internal.bind.v2.runtime.unmarshaller.Loader.reportUnexpectedChildElement(Unknown Source)
    at com.sun.xml.internal.bind.v2.runtime.unmarshaller.UnmarshallingContext$DefaultRootLoader.childElement(Unknown Source)
3 respostas

Fala aí Vinicius, blz?

Consegue mandar a classe Projeto para que eu possa tentar te ajudar?

Beleza e você Fernando ?, segue abaixo a classe.

package br.com.alura.loja.modelo;

import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlRootElement;

import com.google.gson.Gson;
import com.thoughtworks.xstream.XStream;

@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
public class Projeto {

    private String nome;
    private long id;
    private int anoDeInicio;

    public Projeto(){

    }

    public Projeto(long id,String nome,int anoDeInicio){
        this.nome = nome;
        this.id = id;
        this.anoDeInicio = anoDeInicio;
    }

    public String getNome() {
        return nome;
    }
    public void setNome(String nome) {
        this.nome = nome;
    }
    public long getId() {
        return id;
    }
    public void setId(long id) {
        this.id = id;
    }
    public int getAnoDeInicio() {
        return anoDeInicio;
    }
    public void setAnoDeInicio(int anoDeInicio) {
        this.anoDeInicio = anoDeInicio;
    }

    public String toXML() {
        return new XStream().toXML(this);
    }

    public String toJson() {
        return new Gson().toJson(this);
    }



}
solução!

Na anotação @XmlRootElement altere para que ela fique assim @ XmlRootElement(name="projeto") e veja se funciona.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software