Problemas ao utilizar web service Java em .net

Nessa semana que se passou aconteceu algo um pouco diferente do normal. Tive que fazer uma web part que conectasse em um web service feito em Java. A princípio tudo tranquilo, adicionei a referência a partir do WSL publicado e comecei a instanciar os objetos e enviar para o serviço no Visual Studio 2010. Então aconteceu algo intrigante: o retorno do método do web service era sempre null. Utilizei o Fiddler para verificiar o que estava sendo trafegado e era exatamente o retorno que deveria ser: conteúdo XML com a resposta personalizada pelo serviço. A mensagem de retorno era de que o formato do arquivo enviado estava formatado errado, então, sempre que eu chamava o serviço pelo Visual Studio ele enviava essa mensagem com conteúdo diferente do que o esperado. Aí conheci a segunda ferramenta, a soapUI, que é uma ferramenta para testar a comunicação SOAP. Abri a soapUI, informei o mesmo WSL que utilizei no Visual Studio e ele criou um arquivo XML para eu submeter. Submeti o arquivo e vi que a resposta veio correta dessa vez.  Com isso cheguei a 2 conclusões:

  1. O Visual Studio estava enviando o conteúdo da mensagem diferente do que o soapUI, isso estava gerando erro no serviço, que encarava o arquivo enviado como inválido;
  2. O método retornava sempre null no Visual Studio.

Com essas 2 situações na mão e pouco tempo para resolver o problema, comecei a pensar em alternativas diferentes para resolver os problemas. A que mais gostei foi a de executar um POST do XML diretamente no método do webservice. Procurando um pouco na internet achei um post que falava exatamente o que eu precisava Send SOAP XML to Webservice URL e com essa implementação o resultado do web service estava correto e consegui terminar minha web part.

Abaixo o código utilizado:

public string RealizarComunicacaoWebService(string arquivoXML, string enderecoServico)
        {
            //Abre o XML que será enviado para o serviço
            XmlDocument xmlDoc = new XmlDocument();
            xmlDoc.Load(arquivoXML);

            //Cria a requisição web
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(enderecoServico);

            //Atribui as propriedades
            request.Method = "POST";
            request.ContentType = "text/xml";
            request.Timeout = 30 * 1000;

            //Abre o pipe
            Stream request_stream = request.GetRequestStream();
            //Envia o arquivo XML
            xmlDoc.Save(request_stream);
            //Fecha o pipe, muito importante para o próximo passo não dar time out
            request_stream.Close();

            //Obtém o retorno
            HttpWebResponse response = (HttpWebResponse)request.GetResponse();
            Stream r_stream = response.GetResponseStream();
            //Converte o retorno
            StreamReader response_stream = new
            StreamReader(r_stream, System.Text.Encoding.GetEncoding("utf-8"));
            string sOutput = response_stream.ReadToEnd();

            response_stream.Close();

            return sOutput;

        }

Anúncios

2 Respostas to “Problemas ao utilizar web service Java em .net”

  1. Ailton Arruda Says:

    Por favor gostaria de saber se vocês podem me ajudar estou terminando um portal em sharepoint e na aba para acrescentar algum item ele só mostra a metade do formulario no IE 7 mas no Firefox a pagina fica normal,por que acontece esse problema


Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

%d blogueiros gostam disto: