Removendo o namespace da solicitação SOAP
Importei um WSDL e o uso para enviar uma solicitação SOAP. Se parece com isso:
<?xml version="1.0"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<SOAP-ENV:Body>
<Calculate xmlns="urn:xx.WSDL.xxxxxWebService">
<ContractdocumentIn>
<AL>
...More XML...
O problema é oxmlns="urn:xx.WSDL.xxxxxWebService"
parte no elemento Calcular. O serviço da web não pode aceitar isso. O serviço da web não gosta de espaços para nome como este ...
UsandoSoapUI Eu encontrei este pedido para funcionar muito bem:
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://www.w3.org/2003/05/soap-envelope" xmlns:col="http://example.com.service.xxx/">
<SOAP-ENV:Body>
<col:Calculate>
<ContractdocumentIn>
<AL>
...More XML...
Então, como altero a solicitação da primeira para a segunda versão? (Sem usar truques sujos!)
(Reimportar não é um problema se isso resultar no formato de solicitação adequado.)
Novamente: não são permitidos truques sujos, como invadir o fluxo de solicitações para modificá-lo!
E embora eu ainda não o tenha testado completamente, parece que o C # / VS2010 e o Delphi 2010 também não conseguem usar o serviço da Web que estou tentando chamar. Um serviço da web que parece estar escrito em Java.SoapUI passa a ser escrito em Java, portanto, temos um cliente Java conversando com um serviço Java, que parece funcionar muito bem. Mas algum outro cliente?
De qualquer forma, é hora de adicionar mais duas tags: "Java", já que é um serviço Java, e "vs2010" porque o .NET também não gosta desse serviço.
E eu estava prestes a escrever um wrapper sobre esse serviço no .NET, esperando que funcionasse ... Não funciona. Portanto, esta é uma falha muito séria, possivelmente uma falha em Java ...