Fórum POST não está recebendo JSON ASP.NET Web API RESTful #570584
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
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)