Client java pour web services en WCF, problème d'identification
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.
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 :
Code:
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"));
}
} |
En théorie c'est bon.
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 :
Code:
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")); |
Mais je n'arrive pas à invoquer la méthode searchForInfo de cette manière.
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 :
Code:
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")); |
Soit j'ai une erreur 401 soit j'ai l'erreur suivante :
Code:
Exception in thread "main" javax.xml.ws.soap.SOAPFaultException: MustUnderstand headers:[{http://www.w3.org/2005/08/addressing}Action] are not understood
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...
Pourtant ça doit pas être bien sorcier...
Quelqu'un sait comment faire une authentification basique en java pour un tel web service ?