IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Bibliothèques et frameworks PHP Discussion :

[cURL] L'envoi d'une requête (exemple fourni)


Sujet :

Bibliothèques et frameworks PHP

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 9
    Points : 7
    Points
    7
    Par défaut [cURL] L'envoi d'une requête (exemple fourni)
    Bonjour,

    J'ai besoin, pour communiquer avec un webservice, d'envoyer ce type de requête http :

    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
    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
    $soap = new SoapClient(dirname(__file__).'/wsdl/tutelles.wsdl');
    $this->reponse = $soap->__doRequest($this->soapXML,$this->soapURL,$this->soapAction, 1);
    Ce code fonctionnait mais ne me permet pas de gérer les pièces jointes.
    J'essaye donc d'envoyer la requête http directement avec curl, mais je n'y arrive pas.

    Voila ce que je fais :
    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);
    	}
    Bien évidemment ça ne marche pas, et je me suis totalement embrouillé dans ce qu'il faut ou ne pas faire.

    Sauriez vous me donner des pistes pour créer correctement cette requête avec cURL ?

    Merci à tous !

  2. #2
    Membre émérite
    Avatar de gene69
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 769
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 769
    Points : 2 446
    Points
    2 446
    Par défaut
    yes. installe wireshark et sniffe les échanges.

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 9
    Points : 7
    Points
    7
    Par défaut
    Je ne peux pas, puisque l'échange a lieu entre le serveur web et le webservice. À aucun moment l'échange ne passe par ma machine.

    Par contre s'il existe un moyen d'afficher les requêtes envoyées par cURL, je suis preneur (le mode verbose ne m'apporte rien de plus).

    Idéalement, si quelqu'un sait comment construire correctement une requête http multipart qui fonctionne avec cURL, c'est encore mieux ^^

  4. #4
    Membre émérite
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 448
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 448
    Points : 2 284
    Points
    2 284
    Par défaut
    Hello,

    quand tu dis que cela ne fonctionne pas, qu'entends tu par là ?

    Sinon, peut être peux tu envoyer ton formulaire sur une page, ou un socket, que tu contrôle, dans cette page tu enregistre les headers reçus.
    Ensuite tu regardes ce qu'il raconte.
    Ce pourrait déjà être un début de piste.

    Pour le socket, j'avais écris un bout de code, pas dasn cette intention mais bon sa pourrait le faire je pense, https://github . com/maboiteaspam/SocketManager

    a+

Discussions similaires

  1. Envoi d'une requête HTTP
    Par jpean.net dans le forum Web & réseau
    Réponses: 2
    Dernier message: 16/05/2008, 09h38
  2. Erreur de l'envoi d'une requête SQL
    Par mehdiyou dans le forum VB.NET
    Réponses: 7
    Dernier message: 20/04/2008, 23h36
  3. Envoie d'une requête à une liste de serveurs
    Par parano dans le forum Langage
    Réponses: 3
    Dernier message: 05/04/2007, 00h27
  4. [Servlet] envoie d'une requête
    Par gandalf_le_blanc dans le forum Servlets/JSP
    Réponses: 3
    Dernier message: 11/06/2004, 11h43

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo