none
Acessar WebService CXF usando .Net RRS feed

  • Pergunta

  • Pessoal,

     

    Alguém já conseguiu acessar (usando .net) um webservice que foi construído em java usando CXF?

     

    Estou tentando fazer isso, adiciono a Service Reference quando executo o código para acessar os métodos do web service a seguinte exceção é mostrada:

    The content type text/plain of the response message does not match the content type of the binding (text/xml; charset=utf-8)

     

    Ao utilizar um cliente em JAVA, o mesmo erro acontecia até eu acrescentar ao projeto a biblioteca CXF. Aparentemente ela é responsável por fazer essa tradução da resposta para xml.

     

    Obrigado!

    quarta-feira, 3 de novembro de 2010 19:40

Todas as Respostas

  • Gabriel,

    Vai no seu arquivo .config e procura o binding do serviço. Tem um atributo chamado messageEncoding que por padrão é Text e se não está preenchido também entende como Text. Troca para Mtom. Também tem o textEncoding que o padrão é UTF-8. Verifica se o webservice também é.


    Samuel Fabel
    sexta-feira, 5 de novembro de 2010 19:11
  • Samuel/Todos,

     

    Trocando o messageEncoding para MTom alterou o tipo que estava sendo esperado pela resposta:

    The content type text/plain of the response message does not match the content type of the binding (multipart/related; type="application/xop+xml").

     

    Estou desconfiado de alguma configuração no servidor onde o webservice está hospedado. No meu cliente em VB.Net eu faço a requisição que retorna OK, e apenas na requisição é exibida a mensagem de erro acima. Se na 2ª requisição tentar visualizar o wsdl pelo navegador ao invés de aparecer o XML aparecem caracteres esquisitos ("‹ìY[o›0~߯@yéSq³ía‹šLíºI“Ö­j;i¯8‰%°"). Somente depois de dar refresh na página que o XML volta a aparecer e eu consigo fazer outra requisição pelo cliente.

     

    Fazendo testes pelo SoapUI também ocorre de só funcionar na primeira execução, mas nesse caso descobri que desmarcando a opção "Accept compressed responses from hosts" é possível pelo menos visualizar a informação e não os caracteres esquisitos.

    Resposta na 1ª execução: Content-Type: text/xml;charset=UTF-8

    Resposta na 2ª execução: Content-Type: text/plain ; Transfer-Encoding: chunked

     

    Aparentemente o servidor está fragmentando ou compactando a informação a partir da segunda requisição. Alguém saberia como posso fazer para, no cliente VB.Net, descompactar a mensagem?

     

    Novamente agradeço!

     

    Gabriel


    terça-feira, 9 de novembro de 2010 11:45