none
Consumir WebService REST - enviando xml via POST RRS feed

  • Pergunta

  • Bom dia Pessoal!

    Sou novato no fórum, estou com problemas para consumir um WebService onde tenho que enviar um arquivo xml via POST, na internet existem vários códigos de exemplo inclusive ak no fórum já testei alguns, mas resumidamente achei só 3 maneiras diferentes de enviar esse xml.

    A questão é,  entrei em contato com o administrador do WebService e obtive a seguinte resposta, nos logs do site constam minhas requisições mas sem o corpo, ou seja, sem o bem dito xml. Já revisei várias vezes o código e usei até o programa fiddles para gerar essa requisição,mas também retornou erro.

    Será que alguém tem algum código funcional de como enviar xml via POST... 

    terça-feira, 31 de julho de 2012 11:55

Todas as Respostas

  • Ola Wllfl,

        Então existem duas coisas diferentes na sua questão, uma é "Como enviar um XML via POST" e a outra é "Como consumir um webservice via POST".

        Veja, para se consumir um webservice via POST, não se trafega nenhum xml mesmo.... apenas o post como normalmente vc faria entre duas paginas asp...

        Então.. pra consumir um webservice via post, vc pode usar esse metodo:

            public string ExecutarWebMethod(string url, Dictionary<String, String> args) {
                var formulario = new StringBuilder();
                foreach (var key in args.Keys) {
                    if (formulario.Length > 0) formulario.Append("&");
                    var pair = String.Format("{0}={1}", key, args[key]);
                    formulario.Append(HttpContext.Current.Server.UrlEncode(pair));
                }
    
                var request = WebRequest.Create(url);
                request.Method = "POST";
                
                var writer = new StreamWriter(request.GetRequestStream());
                writer.WriteLine(formulario.ToString());
                writer.Flush();
    
                var reader = new StreamReader(request.GetRequestStream());
                return reader.ReadToEnd();
            }
    Se precisar agora enviar um XML via post... basta alterar o conteudo do StringBuilder "formulario" para o valor do seu XML....

    Lembrando q a url deve incluir o metodo desejado: EX: "http://localhost:44402/WebService1.asmx/HelloWorld"
    sexta-feira, 17 de agosto de 2012 20:20
    Moderador
  • Ah desculpa a desatenção... é um WebService REST...

    Mas a solução de requisição via POST acima tambem é valida com pequenas alterações... qualquer duvida é so avisar.


    Microsoft Community Contributor

    sexta-feira, 17 de agosto de 2012 21:42
    Moderador