J'ai importé un WSDL et l'utilise pour envoyer une requête SOAP. Il ressemble à ceci:Suppression de l'espace de nom de la requête SOAP
<?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...
Le problème est la partie xmlns="urn:xx.WSDL.xxxxxWebService"
dans l'élément Calculer. Le service Web ne peut pas accepter cela. Le service web n'aime pas les espaces de noms comme ça ...
En utilisant SoapUI J'ai trouvé cette demande de travailler très bien:
<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...
Alors, comment puis-je changer la demande de la première à la deuxième version? (Sans utiliser des tours sales!)
(réimportation est pas un problème si cela entraînerait le bon format de demande.)
Encore une fois: pas de trucs sales autorisés, comme le piratage du flux de demande de le modifier !
Et alors que je ne l'ai pas complètement testé, il semble que C#/VS2010 et Delphi 2010 sont également incapables d'utiliser le service Web que je suis en train d'appeler. Un service Web qui semble être écrit en Java. SoapUI arrive à être écrit en Java, donc nous avons un client Java qui parle à un service Java, ce qui semble fonctionner correctement. Mais tout autre client?
De toute façon, il est temps d'ajouter deux tags supplémentaires: "Java", puisqu'il s'agit d'un service Java, et "vs2010", car .NET déteste également ce service.
Et j'étais sur le point d'écrire un wrapper autour de ce service dans .NET, espérant que cela fonctionnerait ... Ce n'est pas le cas. Il s'agit donc d'un défaut très sérieux, peut-être un défaut Java ...
Bonne chance. J'ai dû recourir à des trucs sales. –
Oui, je sais. Je peux probablement le résoudre en utilisant des astuces sales, mais la direction n'est pas d'accord avec ça. Donc le code doit être propre. –
Le code SOAP vous permet d'examiner le code XML envoyé et de le modifier si nécessaire. Il prend en charge la manipulation manuelle explicitement. Et le code serait là - rien de "sale" à propos de la manipulation post-build. Peut-être pas aussi bien que automatique, mais personne ne devrait s'inquiéter à ce sujet. – mj2008