POST não está recebendo JSON ASP.NET Web API RESTful

.NET

C#

JSON

07/11/2016

Boa tarde.Preciso de uma ajuda com relação à execução de um POST.

Segue o trecho utilizado do código:

   [ResponseType(typeof(Int32))]
        public IHttpActionResult PostLocal(NovaTelemetria model)
        {
            StringBuilder sb = new StringBuilder();
            try
            {
                sb.AppendLine("INSERT INTO [dbo].[Telemetria]");
                sb.AppendLine("           ([IDVendedor]");
                sb.AppendLine("           ,[Data]");
                sb.AppendLine("           ,[ModeloAparelho]");
                sb.AppendLine("           ,[VersaoOs]");
                sb.AppendLine("           ,[VersaoApp]");
                sb.AppendLine("           ,[Bateria]");
                sb.AppendLine("           ,[Imei]");
                sb.AppendLine("           ,[TipoInternet]");
                sb.AppendLine("           ,[Latitude]");
                sb.AppendLine("           ,[Longitude]");
                sb.AppendLine("           ,[Precisao]");
                sb.AppendLine("           ,[DataGps]");
                sb.AppendLine("           ,[qtdVisitaPend]");
                sb.AppendLine("           ,[qtdVendaPend]");
                sb.AppendLine("           ,[qtdVendaItensPend]");
                sb.AppendLine("           ,[qtdCodBarraPend]");
                sb.AppendLine("           ,[qtdPendCadCli]");
                sb.AppendLine("           ,[qtdPendDocCli]");
                sb.AppendLine("           ,[qtdPendLocalCli]");
                sb.AppendLine("           ,[qtdPendRemessa]");
                sb.AppendLine("           ,[qtdPendRemessaItens])");
                sb.AppendLine("     VALUES");
                sb.AppendLine("           (" + Util.TrataString(model.idVendedor));
                sb.AppendLine("           ,GETDATE()");
                sb.AppendLine("           ,'" + Util.TrataString(model.modeloAparelho) + "'");
                sb.AppendLine("           ,'" + Util.TrataString(model.versaoOs) + "'");
                sb.AppendLine("           ,'" + Util.TrataString(model.versaoApp) + "'");
                sb.AppendLine("           ," + model.bateria);
                sb.AppendLine("           ,'" + Util.TrataString(model.imei) + "'");
                sb.AppendLine("           ,'" + Util.TrataString(model.tipoInternet) + "'");
                sb.AppendLine("           ," + model.latitude.ToString().Replace(',', '.'));
                sb.AppendLine("           ," + model.longitude.ToString().Replace(',', '.'));
                sb.AppendLine("           ," + model.precisao.ToString().Replace(',', '.'));
                sb.AppendLine("           ,CONVERT(DATETIME,'" + model.dataGps.ToString("yyyy-MM-dd HH:mm:ss") + "',120)");
                sb.AppendLine("           ," + model.qtdVisitaPend);
                sb.AppendLine("           ," + model.qtdVendaPend);
                sb.AppendLine("           ," + model.qtdVendaItensPend);
                sb.AppendLine("           ," + model.qtdCodBarraPend);
                sb.AppendLine("           ," + model.qtdCadCliPend);
                sb.AppendLine("           ," + model.qtdDocCliPend);
                sb.AppendLine("           ," + model.qtdLocCliPend);
                sb.AppendLine("           ," + model.qtdRemessaPend);
                sb.AppendLine("           ," + model.qtdItemRemessaPend + ")");

                Conexao con = new Conexao();
                con.ExecutaComando(sb.ToString());

                return CreatedAtRoute("DefaultApi", new { id = 1 }, 1);
            }
            catch (Exception ex)
            {
                return CreatedAtRoute("DefaultApi", new { error = -1 }, -1);
            }
        }

 public class NovaTelemetria
    {
        public String idVendedor { get; set; }
        public String modeloAparelho { get; set; }
        public String versaoOs { get; set; }
        public String versaoApp { get; set; }
        public int? bateria { get; set; }
        public String tipoInternet { get; set; }
        public String imei { get; set; }
        public decimal? latitude { get; set; }
        public decimal? longitude { get; set; }
        public decimal? precisao { get; set; }
        public DateTime dataGps { get; set; }
        public int? qtdVisitaPend { get; set; }
        public int? qtdVendaPend { get; set; }
        public int? qtdVendaItensPend { get; set; }
        public int? qtdCodBarraPend { get; set; }
        public int? qtdCadCliPend { get; set; }
        public int? qtdDocCliPend { get; set; }
        public int? qtdLocCliPend { get; set; }
        public int? qtdRemessaPend { get; set; }
        public int? qtdItemRemessaPend { get; set; }
    }



Porém o webservice está recebendo o objeto json nulo. Recebendo uma string com um valor qualquer e não o objeto.
Alguém consegue me ajudar com uma forma para receber o valor da string.
João Viana

João Viana

Curtidas 0

Respostas

Fernando Vilhena

Fernando Vilhena

07/11/2016

João experimente adicionar o verbo [HttpPost] para informar a api que o método deve ser executado no post da rota.
E experimente também enviar o json pelo body, não esqueça de informar que o parâmetro model vem do body adicionando o [FromBody], comigo funciona desta forma, como no código abaixo.

        [HttpPost]
        [Route]
        public IHttpActionResult PostLocal([FromBody]NovaTelemetria model)


Espero ter ajudado.
GOSTEI 0
POSTAR