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

Problemas com PUT

Pessoal, estou tentando fazer o exemplo do PUT, porém o objeto "Produto" marcado com o "FromBody" está chegando nulo:

método Put do Controller:

        [Route("api/carrinho/{carrinhoId}/produto/{produtoId}/quantidade")]
        public HttpResponseMessage Put([FromBody]Produto produto, [FromUri]long carrinhoId, [FromUri]long produtoId)
        {
            CarrinhoDAO dao = new CarrinhoDAO();
            Carrinho carrinho = dao.Busca(carrinhoId);
            carrinho.TrocaQuantidade(produto);

            return Request.CreateResponse(HttpStatusCode.OK);
        }

JSON usado na chamada:

{
    "Produtos": [
        {
            "Id": 123,
            "Preco": 50,
            "Nome": "Camiseta",
            "Quantidade": 200
        }
    ]
}

Exceção gerada:

    "Message": "Ocorreu um erro.",
    "ExceptionMessage": "Referência de objeto não definida para uma instância de um objeto.",
    "ExceptionType": "System.NullReferenceException",
}

obrigado.

3 respostas

Guilherme, vc está passando um Json com Produtos e está esperando recer um produto. Altera o Json para "Produto"

Obrigado pela observação, Filipe, mas eu já havia tentado alterar o JSON dessa maneira, mas a exception se mantem

{
    "Produto": [
            {
                "Id": 123,
                "Preco": 50,
                "Nome": "Camiseta",
                "Quantidade": 200
            }
        ]
}

e também

{
    "Produto": 
        {
            "Id": 123,
            "Preco": 50,
            "Nome": "Camiseta",
            "Quantidade": 200
        }

}
solução!

No vídeo, o instrutor realiza o exemplo com xml e copia a linha do xmlns, destacando que sem ela a aplicação nao conseguiria interpretar o objeto.