Bonjour.
Je suis novice en web services et je tente de faire un client basique en java pour tester un web services WCF codé avec C# qui utilise une basic authentication.
Je pense avoir réussi à créer un jar avec les méthodes en utilisant la commande suivante :
Ensuite j'ai tenté de créer un client avec eclipse.wsimport -d d:\test\ -clientjar d:\test\ws.jar -extension -Xauthfile d:\test\auth.txt -keep https://webservice.int:443/serveurws.svc
Pour m'entrainer j'avais créer un client webservices en wsdl sans authentification avec succès.
Mais là je suis bloqué.
A priori pour appeler mon web service je dois faire comme ceci :
En théorie c'est bon.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 public class test_ws{ public static void main(String[] args) { ServeurWS service = new ServeurWS(); IServeurWS port = service.getServeurWSEndpoint(); System.out.println(port.searchForInfo("14230")); } }
Seulement évidemment cela ne fonctionne pas car il n'y a pas d'authentification (erreur 401)
Et la je bloque...
J'ai tenté de faire comme ceci :
Mais je n'arrive pas à invoquer la méthode searchForInfo de cette manière.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 String adresse = "https://webservice.int:443/serveurws.svc"; Call call = (Call) (new Service()).createCall(); call.setTargetEndpointAddress(new java.net.URL(adresse)); call.setProperty(Call.USERNAME_PROPERTY, "login"); call.setProperty(Call.PASSWORD_PROPERTY, "mot_de_passe"); ServeurWS service = new ServeurWS(); IServeurWS port = service.getServeurWSEndpoint(); System.out.println(port.searchForInfo("14230"));
J'ai essayé avec la commande invoke mais je n'arrive pas à comprendre comment on lui passe le nom de la méthode à invoquer et comment lui faire passer un paramètre.
J'ai essayé aussi de cette manière sans plus de succès :
Soit j'ai une erreur 401 soit j'ai l'erreur suivante :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 ServeurWS service = new ServeurWS(); IServeurWS port = service.getServeurWSEndpoint(); BindingProvider bindingProvider = (BindingProvider) port; bindingProvider.getRequestContext().put(BindingProvider.USERNAME_PROPERTY, "login"); bindingProvider.getRequestContext().put(BindingProvider.PASSWORD_PROPERTY, "mot_de_passe"); System.out.println(port.searchForInfo("142301875"));
La j'avoue être bloqué.. j'ai écris aux fournisseurs du service mais il ne connaisse que le C# et ne peuvent pas me donner d'exemple de code en java...
Code : Sélectionner tout - Visualiser dans une fenêtre à part Exception in thread "main" javax.xml.ws.soap.SOAPFaultException: MustUnderstand headers:[{http://www.w3.org/2005/08/addressing}Action] are not understood
Pourtant ça doit pas être bien sorcier...
Quelqu'un sait comment faire une authentification basique en java pour un tel web service ?
Partager