2
respostas

Problema com teste utilizando CURL + XML + Post + JaxB

Ao realizar um projeto paralelo para consumir XML o mesmo nao consigo testar com o CURL , porém com Junit funciona normalmente. No caso de usar xml preciso utilizar alguma definição ou parametrização especifica? no metodo GET funciona normalmente. Segue o codigo

@Path("{usuario}/dados/")
    @POST
    @Consumes({MediaType.APPLICATION_XML, MediaType.TEXT_XML})
    public Response adicionaDado(DadoQualidade dado) {
        new DadoQualidadeDAO().adiciona(dado);
        URI uri = URI.create(PATH + dado.getUsuario() + "/dados/");
        return Response.created(uri).build();
    }
@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
public class DadoQualidade {

         private int usuario;
         private String chave;
         private int medidor;
         private double valor;
         private String data;

         public DadoQualidade(){

         }

        public int getUsuario() {
            return usuario;
        }

        public void setUsuario(int usuario) {
            this.usuario = usuario;
        }

        public String getChave() {
            return chave;
        }

        public void setChave(String chave) {
            this.chave = chave;
        }

        public int getMedidor() {
            return medidor;
        }

        public void setMedidor(int medidor) {
            this.medidor = medidor;
        }

        public double getValor() {
            return valor;
        }

        public void setValor(double valor) {
            this.valor = valor;
        }

        public String getData() {
            return data;
        }

        public void setData(String data) {
            this.data = data;
        }
}
curl -X POST "http://localhost:8080/site-qualidade/rest/usuario/12345/dados" -H "accept: application/xml" -H "Content-Type: application/xml" -d "<?xml version=\"1.0\" encoding=\"UTF-8\"?><Dado>\t<usuario>12345</usuario>\t<chave>10edZAElrsDR08e</chave>\t<medidor>1</medidor>\t<valor>20</valor>\t<data>201902152200</data></Dado>"
2 respostas

Qual o problema que o CURL esta fando? Consegue colocar o output do terminal?

Obrigado Allan pela ajuda, acabei solcionando o erro mas segue os detalhes para conhecimento.

O erro que estava dando:

*   Trying ::1...
* TCP_NODELAY set
* Connected to localhost (::1) port 8080 (#0)
> POST /site-qualidade/rest/usuario/12345/dados HTTP/1.1
> Host: localhost:8080
> User-Agent: curl/7.61.1
> Content-Type: application/xml
> Accept: application/xml
> Content-Length: 35
> 
* upload completely sent off: 35 out of 35 bytes
< HTTP/1.1 400 Bad Request
< Server: Apache-Coyote/1.1
< Content-Length: 0
< Date: Wed, 09 Jan 2019 10:58:58 GMT
< Connection: close
< 

Solução do erro foi adicionar o name na anotação @XmlRootElement ficando assim:

@XmlRootElement(name = "Dado")

Dessa forma o nome do nó diferente do nome da classe funcionou coretamente. Abss