Bonjour à tous !

Je suis en train de travailler un peu avec un webservice et je bloque au moment d'ajouter des pièces jointes à l'envoi de mes requêtes.

J'utilisais jusqu'à présent la classe SoapClient native de PHP, mais il me semble qu'elle ne peut pas gérer les pièces jointes.

Je pensais donc utiliser nuSOAP, mais le soucis est que ma trame XML complète est déjà générée par un script.
Il ne me reste plus qu'à l'envoyer, et je n'ai donc pas besoin des "outils de construction" de requête que propose nuSOAP.
Je ne sais tout simplement pas envoyer une trame SOAP comme je faisais auparavant, à savoir :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
$soap = new SoapClient(dirname(__file__).'/wsdl/webservice.wsdl');
$this->reponse = $soap->__doRequest($this->soapXML, $this->soapAddress, $this->soapAction, 1);
Cette solution fonctionne parfaitement mais ne me permet pas d'envoyer de pièces jointes.

Pour information, voici un exemple de trame HTTP que doit recevoir le webservice :
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
POST [URL] HTTP/1.1
SOAPAction: [action soap]
Content-Type: multipart/related; type="text/xml"; start="<rootpart@soapui.org>"; boundary="----=_Part_1_25758823.1255425707384"
MIME-Version: 1.0
User-Agent: Jakarta Commons-HttpClient/3.1
Host: localhost:8080
Content-Length: [size]
 
 
------=_Part_1_25758823.1255425707384
Content-Type: text/xml; charset=UTF-8
Content-Transfer-Encoding: 8bit
Content-ID: <rootpart@soapui.org>
 
<requeteSoapXML></requeteSoapXML>
 
------=_Part_1_25758823.1255425707384
Content-Type: image/jpeg
Content-Transfer-Encoding: binary
 
[ code binaire de la/les pièce(s) envoyé(es) ]
 
------=_Part_1_25758823.1255425707384
J'ai tenté de faire ça avec CURL de cette manière :
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
public function send_curl()
{
    $curl = curl_init();
    $curlParam = Array(
    CURLOPT_URL => $this->soapAddress,
    CURLOPT_POST => true,
    CURLOPT_SSL_VERIFYPEER => false,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_POSTFIELDS => $this->soapXML,
    CURLOPT_HTTPHEADER => Array($this->soapAction)
);
curl_setopt_array($curl, $curlParam);
if (!($this->reponse = curl_exec($curl)))
    die(curl_error($curl).PHP_EOL);
}
Mais ça ne veut pas marcher.

J'en arrive (enfin ! :p) aux questions :

1. nuSOAP est-il un bon choix ? (je vais supposer que oui pour la suite des questions)
2. Comment envoyer une trame XMP SOAP déjà formée à l'aide de nuSOAP ?
3. Comment gérer l'envoi correct de pièces jointes avec une requête déjà formée avec SOAP ?

Je suis preneur de toutes pistes, la je bloque complètement.

Merci à vous !