Précédent   Forum des professionnels en informatique > PHP > Bibliothèques et frameworks > Services Web
Services Web Forum d'entraide pour les services Web en PHP, qui permettent de créer et de consommer facilement des webservices (génération de WSDL etc.). Exemples : SOAP, NuSOAP, REST, SCA-SDO... Avant de poster -> Cours webservices
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 12/07/2011, 11h46   #1
Invité de passage
 
Inscription : octobre 2010
Messages : 9
Détails du profil
Informations forums :
Inscription : octobre 2010
Messages : 9
Points : 2
Points : 2
Par défaut Envoyer une trame XML SOAP avec pièces jointes

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 :
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 :
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 :
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 !
Khamsin est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/07/2011, 11h50   #2
Modérateur
 
Inscription : septembre 2010
Messages : 7 103
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 103
Points : 8 456
Points : 8 456
Citation:
Envoyé par Khamsin Voir le message
1. nuSOAP est-il un bon choix ? (je vais supposer que oui pour la suite des questions)
nuSOAP est libraire en PHP 4, prend quelque chose de plus moderne comme Zend_SOAP
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/07/2011, 12h04   #3
Invité de passage
 
Inscription : octobre 2010
Messages : 9
Détails du profil
Informations forums :
Inscription : octobre 2010
Messages : 9
Points : 2
Points : 2
Merci pour le tuyau !
Cependant, Zend_Soap_Client semble n'être capable que d'appeler des méthodes distantes (soap quoi ...).

J'ai besoin de pouvoir envoyer une trame XML complète au webservice, et c'est la que je bloque.

C'est d'ailleurs pour ça que j'ai fait des tentatives avec CURL, mais ce n'est pas très concluant pour le moment.

Je communique avec le webservice mais il me donne une erreur (flux XML mal formaté).
Khamsin est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/08/2011, 11h30   #4
Invité de passage
 
Inscription : février 2006
Messages : 5
Détails du profil
Informations forums :
Inscription : février 2006
Messages : 5
Points : 1
Points : 1
Salut !

J'ai la même problématique et je vais tester le framework suivant qui apparemment permet d'envoyer des pièces jointes : http://wso2.com/products/web-services-framework/php/.
Si cela peut t'aider !
tipsy est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 06h30.


 
 
 
 
Partenaires

Hébergement Web