POST não está recebendo JSON ASP.NET Web API RESTful
07/11/2016
0
Boa tarde.Preciso de uma ajuda com relação à execução de um POST.
Segue o trecho utilizado do código:
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.
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
Curtir tópico
+ 0
Responder
Posts
17/11/2016
Fernando Vilhena
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.
Espero ter ajudado.
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.
Responder
Clique aqui para fazer login e interagir na Comunidade :)