Bonjour,
J'ai besoin, pour communiquer avec un webservice, d'envoyer ce type de requête http :
La trame XML est créée et est valide pour le webservice. Un envoi avec le client soap de php de ce type fonctionne :
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 POST [url] HTTP/1.1 SOAPAction: [action] 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: 1072648 ------=_Part_1_25758823.1255425707384 Content-Type: text/xml; charset=UTF-8 Content-Transfer-Encoding: 8bit Content-ID: <rootpart@soapui.org> <soapenv:Envelope> ... trame XML ... </soapenv:Envelope> ------=_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
Ce code fonctionnait mais ne me permet pas de gérer les pièces jointes.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 $soap = new SoapClient(dirname(__file__).'/wsdl/tutelles.wsdl'); $this->reponse = $soap->__doRequest($this->soapXML,$this->soapURL,$this->soapAction, 1);
J'essaye donc d'envoyer la requête http directement avec curl, mais je n'y arrive pas.
Voila ce que je fais :
Bien évidemment ça ne marche pas, et je me suis totalement embrouillé dans ce qu'il faut ou ne pas faire.
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 public function send_curl() { $curl = curl_init(); $this->boundary = '------='.(microtime(true) * 100); echo $this->boundary; $this->soapXML = 'Content-Type: text/xml; charset=UTF-8'.$this->soapXML; $curlParam = Array( CURLOPT_URL => $this->soapURL, CURLOPT_POST => true, CURLOPT_SSL_VERIFYPEER => false, CURLOPT_RETURNTRANSFER => true, ); curl_setopt_array($curl, $curlParam); curl_setopt($curl, CURLOPT_POSTFIELDS, Array($this->soapXML)); curl_setopt($curl, CURLOPT_HTTPHEADER, Array('SOAPAction: "'.$this->soapAction.'"', 'Content-Type: multipart/related; type="text/xml"; start="<rootpart@soapui.org>"; boundary="'.$this->boundary.'"')); if (!($this->reponse = curl_exec($curl))) die(curl_error($curl).PHP_EOL); }
Sauriez vous me donner des pistes pour créer correctement cette requête avec cURL ?
Merci à tous !
Partager