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 :
Cette solution fonctionne parfaitement mais ne me permet pas d'envoyer de pièces jointes.
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);
Pour information, voici un exemple de trame HTTP que doit recevoir le webservice :
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
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
Mais ça ne veut pas marcher.
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); }
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 !
Partager