Client Java (applet) - Serveur PHP ?
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 :
Code:
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> |
serveur :
Code:
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();
?> |
en gros, voilà un code php qui marche, je voudrais quelque chose dans le genre, mais dans mon applet :
Code:
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é :lol:
Merci d'avance !