Usuário com melhor resposta
Como usar o PUT para enviar dados para um webservice?

Pergunta
-
Olá,
Eu tenho o seguinte código GET no meu projeto:
String caminhoWebService = "http://localhost:62495/rodada/rodadacorrente"; var requisicaoWeb = WebRequest.Create(caminhoWebService); requisicaoWeb.Method = "GET"; using (var resposta = requisicaoWeb.GetResponse()) { var streamDados = resposta.GetResponseStream(); StreamReader reader = new StreamReader(streamDados); object objResponse = reader.ReadToEnd(); oRodadaBO = JsonConvert.DeserializeObject<RodadaBO>(objResponse.ToString()); }
Só que ele busca os dados do webservice. Agora eu precisaria fazer um PUT desta mesma classe, enviando os dados para o webservice e recebendo como retorno o id da rodada salva. Pesquisei na internet mas não achei nenhum código parecido. Alguém pode me ajudar?
Desde já, obrigado!
Respostas
-
Então... onde na sua função eu envio o objeto populado para o webservice?
Preciso enviar o objeto RODADA para o webservice e receber como retorno o id da rodada cadastrada. O webservice já está funcional, eu não estou sabendo é enviar o objeto e receber ese id.
Olá wcsantos,
Fiz uma interpretação diferente de sua pergunta, quando informou que precisava apenas do PUT por que o GET já estava funcionando, o que quis mostrar era a possibilidade de você ter uma unica função passando parâmetros.
Tenta isso:
// Serealize sua classe aqui var dados = JsonConvert.SerializeObject(oRodadaBO ); var requisicaoWeb = WebRequest.Create(caminhoWebService); requisicaoWeb.Method = "POST"; requisicaoWeb.ContentType = "application/json"; requisicaoWeb.ContentLength = dados.Length; using (var stream = requisicaoWeb.GetRequestStream()) { using (var escrever = new StreamWriter(stream, System.Text.Encoding.ASCII)) { escrever.Write(dados); } } using (var resposta = requisicaoWeb.GetResponse()) { var streamDados = resposta.GetResponseStream(); StreamReader reader = new StreamReader(streamDados); object objResponse = reader.ReadToEnd(); // Aqui você segue seu fluxo oRodadaBO = JsonConvert.DeserializeObject<RodadaBO>(objResponse.ToString()); }
Se a resposta for relevante ou tenha resolvido seu problema, marque como útil/resposta!
Rafael Almeida
Senior Developer C#
Development Leader at JAMSOFT Informática
Microsoft Certified Professional
Criador e Mantenedor do EntityFramework Core for Firebird
Contribuidor do EntityFramework Core
Email: ralms@ralms.net
Blog - GitHub - LinkedIn - Twitter- Marcado como Resposta wcsantos quarta-feira, 20 de dezembro de 2017 19:14
Todas as Respostas
-
Você já pensou em criar uma função e passar o tipo de método?
Exemplo:
public void Teste(string metodo="GET") { var caminhoWebService = "http://localhost:62495/rodada/rodadacorrente"; var requisicaoWeb = WebRequest.Create(caminhoWebService); requisicaoWeb.Method = metodo; using (var resposta = requisicaoWeb.GetResponse()) { var streamDados = resposta.GetResponseStream(); StreamReader reader = new StreamReader(streamDados); object objResponse = reader.ReadToEnd(); oRodadaBO = JsonConvert.DeserializeObject<RodadaBO>(objResponse.ToString()); } ... ... } Teste(); //GET Por padrão Teste("PUT"); // PUT
Se a resposta for relevante ou tenha resolvido seu problema, marque como útil/resposta!
Rafael Almeida
Senior Developer C#
Development Leader at JAMSOFT Informática
Microsoft Certified Professional
Criador e Mantenedor do EntityFramework Core for Firebird
Contribuidor do EntityFramework Core
Email: ralms@ralms.net
Blog - GitHub - LinkedIn - Twitter -
Então... onde na sua função eu envio o objeto populado para o webservice?
Preciso enviar o objeto RODADA para o webservice e receber como retorno o id da rodada cadastrada. O webservice já está funcional, eu não estou sabendo é enviar o objeto e receber ese id.
-
Então... onde na sua função eu envio o objeto populado para o webservice?
Preciso enviar o objeto RODADA para o webservice e receber como retorno o id da rodada cadastrada. O webservice já está funcional, eu não estou sabendo é enviar o objeto e receber ese id.
Olá wcsantos,
Fiz uma interpretação diferente de sua pergunta, quando informou que precisava apenas do PUT por que o GET já estava funcionando, o que quis mostrar era a possibilidade de você ter uma unica função passando parâmetros.
Tenta isso:
// Serealize sua classe aqui var dados = JsonConvert.SerializeObject(oRodadaBO ); var requisicaoWeb = WebRequest.Create(caminhoWebService); requisicaoWeb.Method = "POST"; requisicaoWeb.ContentType = "application/json"; requisicaoWeb.ContentLength = dados.Length; using (var stream = requisicaoWeb.GetRequestStream()) { using (var escrever = new StreamWriter(stream, System.Text.Encoding.ASCII)) { escrever.Write(dados); } } using (var resposta = requisicaoWeb.GetResponse()) { var streamDados = resposta.GetResponseStream(); StreamReader reader = new StreamReader(streamDados); object objResponse = reader.ReadToEnd(); // Aqui você segue seu fluxo oRodadaBO = JsonConvert.DeserializeObject<RodadaBO>(objResponse.ToString()); }
Se a resposta for relevante ou tenha resolvido seu problema, marque como útil/resposta!
Rafael Almeida
Senior Developer C#
Development Leader at JAMSOFT Informática
Microsoft Certified Professional
Criador e Mantenedor do EntityFramework Core for Firebird
Contribuidor do EntityFramework Core
Email: ralms@ralms.net
Blog - GitHub - LinkedIn - Twitter- Marcado como Resposta wcsantos quarta-feira, 20 de dezembro de 2017 19:14
-
-
Po, exatamente isso que eu precisava, salvou o meu natal.
Merecia um presente!
Obrigado e grande abraço!
Posso mandar meu endereço pra mandar o presente. RSS
Brincadeira, abraços conte com o fórum!
Se a resposta for relevante ou tenha resolvido seu problema, marque como útil/resposta!
Rafael Almeida
Senior Developer C#
Development Leader at JAMSOFT Informática
Microsoft Certified Professional
Criador e Mantenedor do EntityFramework Core for Firebird
Contribuidor do EntityFramework Core
Email: ralms@ralms.net
Blog - GitHub - LinkedIn - Twitter