none
Como usar o PUT para enviar dados para um webservice? RRS feed

  • 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!

    sexta-feira, 15 de dezembro de 2017 18:45

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
    domingo, 17 de dezembro de 2017 23:37

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

    sábado, 16 de dezembro de 2017 02:38
  • 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.

    domingo, 17 de dezembro de 2017 14:49
  • 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
    domingo, 17 de dezembro de 2017 23:37
  • Po, exatamente isso que eu precisava, salvou o meu natal.

    Merecia um presente!

    Obrigado e grande abraço!

    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

    quarta-feira, 20 de dezembro de 2017 19:40