2009-06-24 24 views
2

Je dois utiliser un service Web tiers implémenté dans .NET 2.0 (sur IIS, bien sûr).HOWTO remplace les en-têtes de requête Axis2 pour le service Web .NET?

Je dois créer un client Java. J'utilise wsdl2java pour générer le stub SOAP. Comme le projet Apache Axis original semble maintenant non maintenu et que j'avais quelques problèmes à analyser certaines réponses du service, j'ai converti le client pour utiliser la dernière version (1.5) d'Axis2. Maintenant, le service .NET ne reconnaîtra même pas mes demandes.

j'ai réussi à obtenir le « Arrachement » désactivé (où « stub » est une variable de type MumbleStub généré par wsdl2java, et je montre ce que plusieurs lignes de code comme une ligne horrible ici):

stub._getServiceClient().getOptions().setProperty(HTTPConstants.CHUNKED, Boolean.FALSE); 

.. donc au moins le service reconnaît ma demande AS une demande, bien qu'un mauvais: "HTTP/1.1 400 Bad Request" est la réponse maintenant (par opposition à une page "intro/résumé" m'offrant un lien vers le WSDL) . J'ai remarqué que la requête Axis ("1") avait un en-tête Content-TYpe différent (text/xml, vs application/soap-xml), et je me demande comment changer cet en-tête de requête, si cela est fait le problème.

Alternativement, quelqu'un d'autre a-t-il eu ce problème? Est-ce que le problème est vraiment le (non affichable ici, car il ressemble à "injection d'élément" dans le moteur de blog) ... xml version- "1.0" ... "XML meta intro tag" qu'Axis2 a ajouté au début de la requête?

WS-Deathstar, en effet.

+0

vous pourriez publier de telles choses à dire pastebin ou similaire. ou marquez-les comme "code" qui devrait vous permettre d'afficher n'importe quoi – jitter

+0

btw. Je parle de la partie "indisplayable" – jitter

Répondre

2

Comme vous le mentionnez les différents en-tête de type de contenu Je suppose que votre client tente d'envoyer SOAP 1.2 demandes et l'application 3ème partie ne comprend que SOAP 1.1

Essayez de changer la version de savon utilisé comme AFAIK AXIS2 utilise SOAP 1.2 par défaut

stub._getServiceClient().getOptions().setSoapVersionURI(org.apache.axiom.soap.SOAP11Constants.SOAP_ENVELOPE_NAMESPACE_URI); 
+0

Eh bien, cela ressemble à la réponse, mais j'ai besoin de faire un peu de nettoyage (excès drivel de log4j) pour s'assurer que je n'ai pas échangé les problèmes. MERCI! – Roboprog

+0

Il fait maintenant tout ce que l'ancien code client Axis a fait, pas de régressions. Espérons que Axis2 résoudra d'autres problèmes que j'avais. – Roboprog

+0

hey sinon. essayez votre chance avec une autre question :) – jitter