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

Langage PHP Discussion :

utiliser un web service en POST


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 288
    Par défaut utiliser un web service en POST
    Bonjour,

    Je dois utiliser un web service pour la première fois, et même si j'ai des indications assez précises je rame pour les traduire en PHP...

    Voici mes consignes :
    1. appeler l'URL http://toto
    2. utiliser un header avec des attributs Accept et Content-Type
    3. envoyer un body formaté en XML
    4. envoyer le tout en POST


    Voici mon dernier test :

    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
    $url = 'http://toto';
     
    $data ='<attrs>
    <attr name="userName" type="string"/>Ali Baba</attr>
    <attr name="password" type="string"/>Sésame, ouvre-toi</attr>
    <attr name="auth" type="string" possibilities="secEnterprise,secLDAP,secWinAD,secSAPR3">secEnterprise</attr>
    </attrs>
    ';
     
    $options = array(
        'http' => array(
            'header'  => "Content-type: application/xml\r\nAccept: application/xml",
            'method'  => 'POST',
    	'content' => urlencode($data) 
        )
    );
    $context  = stream_context_create($options);
    $result = file_get_contents($url, false, $context);
    if ($result === FALSE) { echo "raté" ; }
     
    var_dump($result);
    Comme résultat, j'obtiens bien sûr raté.

    L'un des trucs que je ne comprends pas : en POST, je suis censé envoyer des paires clef/valeur et pas un code XML... Est-ce que je dois l'associer à une clef ?

    Je fais sans doute un paquet d'erreurs de débutant...

  2. #2
    Membre très actif
    Homme Profil pro
    Déveleoppeur Web/Mobile
    Inscrit en
    Avril 2013
    Messages
    330
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Déveleoppeur Web/Mobile
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2013
    Messages : 330
    Par défaut
    file_get_contents utilise le protocole openssl est-ce que celui-ci est bien activé ? On sait jamais ...

    Sinon j'ai toujours utilisé les webservices avec des variables en GET et non en POST, je suis curieux de connaitre la réponse aussi

  3. #3
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 288
    Par défaut
    Merci de ta réponse, je faisais du SSO sans le savoir, et ça doit être au moins une partie du problème !

    Quelle fonction PHP tu utiliserais pour envoyer un POST ? fopen ?

  4. #4
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 693
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 693
    Par défaut
    A première vue ton code est correct.

    file_get_contents utilise le protocole openssl est-ce que celui-ci est bien activé ? On sait jamais ...
    Son url semble être du http, donc openssl n'intervient pas là dedans.

    Est ce qu'un get tout simple marche ?
    Si non , c'est sans doute la directive allow_url_fopen qu'il faut passer à 1 : http://php.net/manual/en/filesystem.configuration.php

    Tu peux essayer dans ton tableau d'option du stream d'ajouter :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    'ignore_errors' => TRUE
    Et pour finir essayer d'afficher le code de retour HTTP peut également aider :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var_dump($http_response_header);
    http://php.net/manual/en/reserved.va...onseheader.php
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 288
    Par défaut
    Citation Envoyé par grunk Voir le message
    Est ce qu'un get tout simple marche ?
    Si j'appelle l'URL directement dans un navigateur, le serveur me répond et me donne un exemple du XML à renseigner. C'est ça que tu voulais dire par "Est ce qu'un get tout simple marche ?
    Citation Envoyé par grunk Voir le message
    Si non , c'est sans doute la directive allow_url_fopen qu'il faut passer à 1 : http://php.net/manual/en/filesystem.configuration.php
    OK, mais après j'utilise quoi ? file_get_contents ? fopen ? curl ???

    Désolé si je pose des questions idiotes, c'est ma toute toute première fois

  6. #6
    Membre très actif
    Homme Profil pro
    Déveleoppeur Web/Mobile
    Inscrit en
    Avril 2013
    Messages
    330
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Déveleoppeur Web/Mobile
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2013
    Messages : 330
    Par défaut
    Son url semble être du http, donc openssl n'intervient pas là dedans.
    Rien à voir.

    Il peut utiliser curl ou openssl

  7. #7
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 288
    Par défaut
    Je viens d'essayer avec fopen, et j'obtiens quelque chose

    array (size=6)
    0 => string 'HTTP/1.1 401 Non-Autoris�' (length=25)
    1 => string 'Server: Apache-Coyote/1.1' (length=25)
    2 => string 'Date: Fri, 20 May 2016 12:50:49 GMT' (length=35)
    3 => string 'Content-Type: application/xml' (length=29)
    4 => string 'Content-Length: 129' (length=19)
    5 => string 'Connection: close' (length=17)

    C:\wamp64\www\test2.php:32:resource(3, stream)
    Il faut juste que je récupère mon stream...

    C'est bon avec stream_get_contents.

    Merci beaucoup !

    J'ai crié victoire un peu vite... La réponse que j'obtiens m'indique que mon appel est mal formaté...

    Vous voyez un truc que j'aurais dû faire ou que je devrais tester ? encoder en JSON ? Utiliser SoapClient ?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Utiliser un web service php depuis dotnet
    Par mnemonic78 dans le forum C#
    Réponses: 1
    Dernier message: 04/11/2008, 15h00
  2. utilisation de web Service
    Par asmoune dans le forum Services Web
    Réponses: 6
    Dernier message: 20/09/2008, 22h13
  3. [Web Service][SOAP] Utiliser un web service .NET
    Par Madinico dans le forum Bibliothèques et frameworks
    Réponses: 6
    Dernier message: 18/03/2008, 08h28
  4. utiliser un web service php avec Visual Studio
    Par <% Bastien %> dans le forum Services Web
    Réponses: 6
    Dernier message: 15/03/2008, 16h26
  5. Réponses: 0
    Dernier message: 11/12/2007, 11h42

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