none
enviar por post o xml RRS feed

  • Pergunta

  • bom dia

    estou tentando enviar por post um xml

    utilizando este método para o envelope:

     public string soapXmlStatusServico(string xml, string metodo)
            {
                string result = string.Empty;
                MemoryStream stream = new MemoryStream();
    
                using (XmlTextWriter writer = new XmlTextWriter(stream, Encoding.UTF8))
                {
                    writer.WriteStartDocument();
                    writer.WriteStartElement("soap12:Envelope");
                    writer.WriteAttributeString("xmlns:xsi", "http://www.w3.org/2001/XMLSchema-instance");
                    writer.WriteAttributeString("xmlns:xsd", "http://www.w3.org/2001/XMLSchema");
                    writer.WriteAttributeString("xmlns:soap12", "http://www.w3.org/2003/05/soap-envelope");
                    writer.WriteStartElement("soap12:Body");
                    writer.WriteStartElement(metodo);
    
                    writer.WriteStartElement(xml);
                    writer.WriteEndElement();
                    writer.WriteEndElement();
                    writer.WriteEndElement();
                    writer.WriteEndDocument();
                    writer.Flush();
    
                    StreamReader reader = new StreamReader(stream, Encoding.UTF8, true);
                    stream.Seek(0, SeekOrigin.Begin);
                    result += reader.ReadToEnd();
                }
    
                return result;
            }

    e este para enviar

      public string RequestWebService(string param, X509Certificate2 cert, string uri)
            {
                Uri urlpost = new Uri(uri);
                HttpWebRequest httpPostConsultaNFe = (HttpWebRequest)HttpWebRequest.Create(urlpost);
                httpPostConsultaNFe.KeepAlive = false;
    
                string postConsultaComParametros = param;
                byte[] buffer2 = Encoding.UTF8.GetBytes(postConsultaComParametros);
    
                httpPostConsultaNFe.CookieContainer = cookies;
                httpPostConsultaNFe.Timeout = 300000;
                httpPostConsultaNFe.ContentType = "application/soap+xml; charset=utf-8";
                httpPostConsultaNFe.Method = "POST";
                httpPostConsultaNFe.ClientCertificates.Add(cert);
                httpPostConsultaNFe.ContentLength = buffer2.Length;
    
                Stream PostData = httpPostConsultaNFe.GetRequestStream();
                PostData.Write(buffer2, 0, buffer2.Length);
                PostData.Close();
    
                HttpWebResponse responsePost = (HttpWebResponse)httpPostConsultaNFe.GetResponse();
                Stream istreamPost = responsePost.GetResponseStream();
                StreamReader strRespotaUrlConsultaNFe = new StreamReader(istreamPost, System.Text.Encoding.UTF8);
    
                return strRespotaUrlConsultaNFe.ReadToEnd();
            }

    mas não está funcionando...

    alguem já implementou?

    é para enviar  nfse para as prefeituras.

    obrigado

    quarta-feira, 27 de abril de 2016 19:12

Todas as Respostas

  • Bom dia Hawk B,

    Tudo bem?

    Qual seria o erro que o código está gerando?

    Send data by post method in C#

    How to send XML data to a Webpage using “POST” Method

    HTTP post XML data in C#

    Atenciosamente


    Marcos SJ

    Esse conteúdo e fornecido sem garantias de qualquer tipo, seja expressa ou implícita

    MSDN Community Support

    Por favor, lembre-se de Marcar como Resposta as postagens que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.


    • Editado Marcos SJ quinta-feira, 28 de abril de 2016 13:39
    quinta-feira, 28 de abril de 2016 13:34
  • ele dá um erro com o código 500
    quinta-feira, 28 de abril de 2016 14:00
  • Olá Hawk B,

    Isto é tudo?

    Erro 500.

    Tem certeza de que não há nenhuma outra informação?

    Atenciosamente


    Marcos SJ

    Esse conteúdo e fornecido sem garantias de qualquer tipo, seja expressa ou implícita

    MSDN Community Support

    Por favor, lembre-se de Marcar como Resposta as postagens que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.

    quinta-feira, 28 de abril de 2016 14:50
  • sim... um erro 500 

    "The remote server returned an error: (500) Internal Server Error."

    na variavel param estou passando o envelope

    na variavel cert estou passando o certificado

    na variavel uri estou passando o endereço do webservice


    • Editado Hawk B sexta-feira, 29 de abril de 2016 20:39
    sexta-feira, 29 de abril de 2016 20:39
  • É um webservice SOAP? Tipo, você tem o wsdl?
    sexta-feira, 29 de abril de 2016 22:57
  • sim, tenho o wsdl
    segunda-feira, 2 de maio de 2016 11:37
  • Então o que você deveria fazer é referenciar o serviço na sua aplicação. Neste vídeo, eu explico como é feito esse processo.
    segunda-feira, 9 de maio de 2016 04:44
  • sim, eu estou referenciando...

    mas eu preciso enviar por post..

    analisando o envelope gerado, está gerando com tag a mais.. não estou conseguindo gerar o envelope corretamente

    segunda-feira, 9 de maio de 2016 11:24
  • Aí é que você está se perdendo. Você não vai gerar um XML e enviar. O seu webservice deve ter um método para enviar o que você está querendo. E ele deve receber como parâmetro uma instância de uma determinada classe. Então o que você deve fazer é instanciar essa classe, preencher os dados e executar o método, passando sua instância de classe como parâmetro. WebService SOAP é feito justamente para evitar ter de fazer o que você está tentando fazer.
    segunda-feira, 9 de maio de 2016 22:30