Bonjour,
Des collègues m'ont affirmé qu'il était possible de faire appel à un WebService depuis Java sans WSDL. Je m'y suis donc attelé.
Pour info le WebService utilise NuSOAP.
Extrait du code java. J'ai une erreur 500 qui survient lors de l'appel à la méthode invoke().
(pour info URL_OPERATION contient l'url d'appel au web service, exactement la même qui est utilisée par le code php ci-dessous)Code:
1
2
3
4
5
6
7
8
9 Service service = new Service(); Call call = (Call) service.createCall(); call.setTargetEndpointAddress( new URL( URL_OPERATION ) ); call.setOperationName( "getInfo" ); call.addParameter("param1", XMLType.XSD_STRING, ParameterMode.IN); call.addParameter("param2", XMLType.XSD_STRING, ParameterMode.IN); SOAPEnvelope se = (SOAPEnvelope) call.invoke( new Object[]{ sParam1, sParam2 } );
A côté de ça on m'a fournit une page php qui fait appel avec succès au WS, dont voici le code simplissime :
Et voici ce que je peux lire dans la partie request affichée au retour :Code:
1
2
3
4 require_once('/www/sites/includes/class/nusoap.php'); $client = new soapclient(URL_OPERATION); $res = $client->call('getInfo', array( "params"=> array('param1'=>'CIRC', 'param2'=>'DRT' ) ));
Je cherche ce qui manque dans le code Java pour que cela fonctionne. J'ai entre autres essayé d'ajouter le namespace "http://tempuri.org" avec le préfix "ns2917" mais sans succès.Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 User-Agent: NuSOAP/0.9.5 (1.123) Content-Type: text/xml; charset=ISO-8859-1 SOAPAction: "" Content-Length: 708 <?xml version="1.0" encoding="iso-8859-1"?> <SOAP-ENV:Envelope SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/"> <SOAP-ENV:Body> <ns2917:getInfo xmlns:ns2917="http://tempuri.org"> <params> <param1 xsi:type="xsd:string">CIRC</type> <param2 xsi:type="xsd:string">DRT</sousType> </params> </ns2917:getInfo> </SOAP-ENV:Body> </SOAP-ENV:Envelope>
Ca m'intrigue au passage de lireQuelqu'un saurait-il m'expliquer comment résoudre ce problème ?Citation:
SOAPAction: ""
Merci d'avance pour votre aide.