Bonjour à tous,
je suis entré récemment dans la jungle des webservices, j'essaye d'avancer mais ce n'est pas toujours évident...
La question que je me pose en ce moment est : est-ce que je peux avoir d'un côté une applet Java faisant office de client, et de l'autre un service php ?
Mon but est d'envoyer une image récupérée chez le client par l'applet, de l'envoyer sous forme de byte[], et de l'enregistrer sur le serveur.
Je dispose déjà de l'image en base 64 prête à être envoyée par l'applet, du code serveur php, du fichier wsdl, mais je ne sais pas comment faire appel au service dans mon applet.
fichier wsdl :
serveur :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51 <?xml version="1.0"?> <definitions name="transfertImage" targetNamespace="http://127.0.0.1/acquisition/transfertImage.wsdl" xmlns:tns="http://127.0.0.1/acquisition/transfertImage.wsdl" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" xmlns="http://schemas.xmlsoap.org/wsdl/"> <message name="m1"> <part name="image" type="xsd:base64Binary"/> </message> <message name="m2"> <part name="success" type="xsd:boolean"/> </message> <portType name="pt1"> <operation name="receiveFile"> <input message="m1"/> <output message="m2"/> </operation> </portType> <binding name="b1" type="typens:pt1"> <soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http" /> <operation name="receiveFile"> <soap:operation soapAction="http://127.0.0.1/acquisition/transfertImage.wsdl"/> <input> <mime:multipartRelated> <mime:part name="imageData"> <mime:content part="image" type="image/jpeg"/> </mime:part> </mime:multipartRelated> </input> <output> <soap:body use="literal"/> </output> </operation> </binding> <service name="serviceTransfertImage"> <port name="pt1" binding="typens:b1"> <soap:address location="http://127.0.0.1/acquisition/transfertImage_server.php"/> </port> </service> </definitions>
en gros, voilà un code php qui marche, je voudrais quelque chose dans le genre, mais dans mon applet :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29 <?php class serviceTransfertImage { function receiveFile($data){ $written=false; $data=base64_decode($data); $path='img_out.jpg'; $fp=fopen($path,'w+'); if($fp){ fwrite($fp,$data); fclose($fp); $written=true;} return $written; } } ini_set('soap.wsdl_cache_enabled', 0); try { $server = new SoapServer('transfertImage.wsdl', array('trace' => 1, 'soap_version' => SOAP_1_1, 'encoding' => 'ISO-8859-1')); $server -> setclass('serviceTransfertImage'); } catch (Exception $e) { echo $e; } $server -> handle(); ?>
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 <?php $path = utf8_decode(urldecode($_GET['path'])); ini_set('soap.wsdl_cache_enabled', 0); try { $client = new SoapClient('transfertImage.wsdl', array('trace' => 1, 'soap_version' => SOAP_1_1, 'encoding' => 'ISO-8859-1')); $data=file_get_contents($path); $client->receiveFile(base64_encode($data)); } catch (SoapFault $fault) { echo $fault; } ?>
Je ne sais pas trop quoi chercher...Axis ? Pourriez-vous m'indiquer des pistes, cela serait grandement apprécié
Merci d'avance !
Partager