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 : 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>
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
 
<?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 : 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 !