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 :
wsimport -d d:\test\ -clientjar d:\test\ws.jar -extension -Xauthfile d:\test\auth.txt -keep https://webservice.int:443/serveurws.svc
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 : 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"));
    }
 
}
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 : 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"));
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 : 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"));
Soit j'ai une erreur 401 soit j'ai l'erreur suivante :
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
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 ?