Comment ajouter un en-Tête Soap définies dans un document wsdl d'un service web client dans CXF?
J'ai un fichier wsdl qui définit un en-tête soap qui doit être transmise lors de l'appel du service web.
L'exemple d'en-Tête SOAP est:
<soapenv:Header>
<AuthenticationInfo>
<userName>User</userName>
<password/>
</AuthenticationInfo>
</soapenv:Header>
CXF est wsdl2java généré un "AuthenticationInfo" classe java que je peux créer et remplir un nom d'utilisateur et mot de passe, mais je ne sais pas la bonne façon de passer qu'à la CXF Client lors de l'appel du service web.
- Exemple qui génère des méthodes client avec des arguments pour un en-tête: github.com/skjolber/mockito-soap-cxf
Vous devez vous connecter pour publier un commentaire.
Bien, la façon la plus simple de le faire serait de créer un
ArrayList
deHeader
objets et les ajouter tous vos paramètres ou unMap<String,Object>
et d'ajouter tous les en-têtes commemap.put("param1",param1).
Enfin obtenir votre demande de contexte et d'ajouter à cette liste de tableaux de carte comme
Si vous êtes en essayant de passer personnalisés en-têtes soap, reportez-vous CE LIEN.
Le général pièges ont été mentionnés dans CETTE DISCUSSION. Il pourrait être utile pour vous.
<a:Action s:mustUnderstand="1">StorageMessage</a:Action>
dans la demande de traduire ce morceau de code en javaHeader actionHeader = new Header(new QName("uri:org.apache.cxf", "Action"), "StorageMessage", new JAXBDataBinding(String.class));
?Lors de la génération de la classe de proxy à l'aide d'Apache CXF à l'aide de l'ajout de la extendedSoapHeaders avec la volonté véritable de générer le PortType Classe avec la Demande et de l'en-Tête argument.
Si l'en-tête SOAP est définie dans le fichier WSDL alors il peut être spécifié implicite ou explicite.
CXF fournit la wsdl2java outil pour la génération d'un service Java de l'interface à partir d'un WSDL. Dans le cas de l'explicite en-têtes, les en-têtes SOAP sont automatiquement détectés et mis à disposition dans le cadre de l'interface de service, qui est généré.
Si les en-têtes SOAP ont été définis implicitement, ensuite, vous devez activer le
-exsh
option qui déclenche le traitement de l'implicite en-têtes SOAP. Nouveau les en-têtes SOAP sera mis à disposition dans le cadre du service d'interface Java qui est généré. Si vous voulez un exemple concret, vous pouvez commander un billet de blog que j'ai mis sur comment ajouter un cxf d'en-tête soap.Noter que CXF prend également en charge d'autres façons d'ajouter des en-têtes SOAP.