Question

Je rencontre un problème avec Delphi 2007 lorsque je tente d'utiliser un service Web que j'ai configuré en Java à l'aide de JAX-WS. Le service Web peut être utilisé sans problème à partir d'un autre programme Java et d'un site Web C # / ASP.NET 2.0. Cependant, lorsque j'essaie d'accéder au même service à l'aide de l'importateur WSDL dans Delphi 2007 (correctif 17-DE-2007), le service Web JAX-WS ne reconnaît aucun des paramètres que je le transmets et les annule.

J'ai vérifié le message SOAP transmis par Delphi et le comparé aux autres. Ils sont à peu près identiques (à l'exception de certains decs d'espace de nom négligeables et de nombreux états d'affichage de .NET!).

J'ai également visité le Web (le lien le plus utile était celui du Dr Bob http://www.bobswart.nl/Weblog/Blog.aspx?RootId=5:798 ) mais pas de joie.

Quelqu'un a-t-il déjà rencontré ce problème?

TIA.

La saga continue!

Après avoir encerclé avec l'objet HTTPRIO pour essayer de le faire fonctionner, j'ai finalement abandonné et essayé un transfert XML direct sur HTTP. Échec.

Bien, j'ai donc construit un testeur simple en C # et essayé. Fonctionne sans problème.

En utilisant Fiddler pour voir ce qui était envoyé en arrière et en avant, il semblait que la seule différence était dans les espaces de noms. J'ai changé les espaces de noms dans l'envoi XML dans Delphi et ... ça marche!

Il s'agissait d'un exemple du code XML d'origine généré par WSDLImporter:

<?xml version="1.0"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
    <SOAP-ENV:Body>
        <version xmlns="http://path.to.service.com/">
            <input>test</input>
        </version>
    </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

et voici ce qui fonctionne réellement:

<?xml version="1.0"?>
<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
    <S:Body>
        <ns2:version xmlns:ns2="http://path.to.service.com/">
            <input>test</input>
        </ns2:version>
    </S:Body>
</S:Envelope>

Alors, maintenant que je le sais, je vais changer les valeurs d'espace de nom pour le code WSDLImporter? Je ne vois rien d’évident sur les propriétés HTTPRIO.

TIA

Était-ce utile?

La solution

HA HA IL VIT !!!

Fondamentalement, je devais prendre le recommandé

InvRegistry.RegisterInvokeOptions(TypeInfo(ActivityService), ioDocument);

et le forcer à utiliser la Sec. 5 encodage. Les espaces de noms sont générés selon les besoins et les paramètres sont transmis au service Web Java.

Oui, il faut de la bière, beaucoup de bière:)

Autres conseils

Vous devriez simplement commenter cette ligne dans votre WSDL:

//InvRegistry.RegisterInvokeOptions(TypeInfo(WebService), ioDocument);

C’est assez ... amusez-vous.

Ce n’est pas la solution à votre problème, mais j’ai eu récemment des problèmes avec le même environnement. J'ai dû changer les options plusieurs fois jusqu'à trouver le bon moyen de consommer le service Web (écrit en C #).

Vérifier:

- THTTPRIO.Converter.Options
- THTTPRIO.HTTPWebNode
- THTTPRIO.HTTPWebNode.InvokeOptions

Je me suis cogné la tête contre un mur pendant deux jours, jusqu'à ce que je trouve ce message ... Et Cesars suggèrent de vérifier THTTPRIO.Converter.Options ... J'ai presque tout essayé, le dernier étant de régler soXXXXHdr sur true - > alors arrivé quelque chose d'étrange, plus de NULL au serveur: O ...

Je ne sais pas pourquoi ce paramètre fait passer les valeurs, c'est juste le cas (du moins pour moi).

Ce serait bien si quelqu'un qui comprend réellement ce qui se passe expliquerait cela.

Supprimer soSendMultiRefObj de Converter.Options aide

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top