Comment puis-je changer dynamiquement l'adresse que mon client JAXWS utilise? Ce client a été généré par wsimport.
Résolution du problème à l'aide d'Apache CXF.
Avec seulement deux lignes de code! Voici l'extrait:
URL url_wsdl = new URL("http://myserver/myservice?wsdl");
Service service = Service.create(url_wsdl, new QName("http://myaddress...", "ServiceName"));
return service.getPort(MyJAXWSPortClass.class);
Vous pouvez y parvenir à l'aide de l'interface BindingProvider.
point de terminaison personnalisé JAX-WS
/**
* The following snippets shows how to set a custom endpoint for a JAX-WS generated WebClient on runtime
*/
// Get the service and the port
SampleService service = new SampleService();
Sample port = service.getESamplePort();
// Use the BindingProvider's context to set the endpoint
BindingProvider bp = (BindingProvider)port;
bp.getRequestContext().put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, "http://www.aviramsegal.com/ws/sample");
/* Optional credentials */
bp.getRequestContext().put(BindingProvider.USERNAME_PROPERTY, "user");
bp.getRequestContext().put(BindingProvider.PASSWORD_PROPERTY, "password");
port.callSampleMethod();
Je suis nouveau dans l'intégration Paypal, je ne suis pas sûr de l'API Adaptive Payment. Mais nous avons le privilège de vérifier si l'identifiant de messagerie spécifique ayant un compte dans Paypal ou non en utilisant la méthode GetVerifiedStatus .
Veuillez utiliser l'URL wsdl du sandbox ci-dessous pour vérifier les e-mails
URL: https://svcs.sandbox.Paypal.com/AdaptiveAccounts?wsdl
La réponse sera comme ci-dessous
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Header/>
<soapenv:Body>
<ns2:GetVerifiedStatusResponse xmlns:ns2="http://svcs.Paypal.com/types/aa">
<responseEnvelope>
<timestamp>2015-07-20T23:42:46.661-07:00</timestamp>
<ack>Success</ack>
<correlationId>5cea9a8575ab9</correlationId>
<build>17345626</build>
</responseEnvelope>
<accountStatus>UNVERIFIED</accountStatus>
<countryCode>IN</countryCode>
<userInfo>
<emailAddress>[email protected]</emailAddress>
<accountType>PERSONAL</accountType>
<accountId>6KD7EVWM2E2AQW</accountId>
<name>
<salutation/>
<firstName>anand</firstName>
<middleName/>
<lastName>anand</lastName>
<suffix/>
</name>
<businessName/>
</userInfo>
</ns2:GetVerifiedStatusResponse>
</soapenv:Body>
</soapenv:Envelope>
Remarque: lors de la création du stub, n'oubliez pas de définir le point de terminaison comme ci-dessous. si nous ne le définissons pas, nous ne pouvons pas obtenir la sortie attendue.
String endpointURL = "https://svcs.sandbox.Paypal.com/AdaptiveAccounts/GetVerifiedStatus";
utiliser la méthode ci-dessous pour ajouter un point de terminaison
private static void addEndPoint(AdaptiveAccountsPortType port,
String endpointURL) {
BindingProvider bp = (BindingProvider)port;
bp.getRequestContext().put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, endpointURL);
/*List hchain = bp.getBinding().getHandlerChain();
if (hchain == null) {
hchain = new ArrayList();
}
hchain.add(new HTTPUserAgentHandler());
bp.getBinding().setHandlerChain(hchain);*/
}
Je ne sais pas comment procéder si vous utilisez wsimport. J'ai eu le même problème, j'ai donc utilisé Intellij IDEA (version 9) pour créer le code client pour moi. Il a fourni un constructeur de point de terminaison de service qui prend l'url wsdl.