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

Réseau/Web Python Discussion :

Appel d'un web service qui attend des data au format JSON


Sujet :

Réseau/Web Python

  1. #1
    Nouveau membre du Club
    Inscrit en
    Février 2007
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 30
    Points : 28
    Points
    28
    Par défaut Appel d'un web service qui attend des data au format JSON
    Bonjour,
    Mon script python (python 3.1) doit appeler un web service pour lui envoyer des paramètres au format JSON.

    N'étant pas familier avec JSON, je pensais que le code ci-dessous suffirait mais apparemment le web service ne reçoit rien.

    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
    #!/usr/bin/python3.1 -u
    # -*- coding:UTF-8 -*-
     
     
    import http.client
    import json
     
    data = [{'routing_account_id': '00001', 'submit_message_id': '20110330192351111536'}, {'routing_account_id': '00001', 'submit_message_id': '20110330192351624189'}]
     
    conn = http.client.HTTPConnection('zzz.z.z.z:80')
    conn.request('POST', '/debug_post_json.php', body=json.dumps(data), headers={"Content-type": "application/json", "Accept": "application/json"})
    response = conn.getresponse()
    print(response.status, response.reason)
    data = response.read()
    print(data)
    conn.close()
    Mon appel n'est-il pas bon ?

    Merci pour votre aide.

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 283
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 283
    Points : 36 770
    Points
    36 770
    Par défaut
    Salut
    Cette ligne:
    print(response.status, response.reason)
    donne quoi?
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Nouveau membre du Club
    Inscrit en
    Février 2007
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 30
    Points : 28
    Points
    28
    Par défaut
    Citation Envoyé par wiztricks Voir le message
    Salut
    Cette ligne:
    print(response.status, response.reason)
    donne quoi?
    - W
    J'obtiens :
    200 OK

    J'ai fait un script php pour simuler le web service
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <?php
     
    $handle = fopen("/tmp/debug_post_json.log", "ab");
    fwrite($handle, print_r($_SERVER["REQUEST_URI"],true)."\n");
    fwrite($handle, print_r($_POST,true)."\n");
    fwrite($handle, print_r(json_decode(stripslashes($_POST)),true)."\n");
    fclose($handle);
    ?>
    et le fichier "/tmp/debug_post_json.log" contient:
    /debug_post_json.php
    Array
    (
    )

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 283
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 283
    Points : 36 770
    Points
    36 770
    Par défaut
    Salut,

    Ca à l'air de communiquer de bout en bout puisque le .PHP recoit quelque chose mais qu'est ce qu'il a reçu?
    Essayez de dumper les headers et le message sans le décortiquer via JSON.
    Est ce que le Content-Length est non nul? (il devrait).
    Est ce que les autres headers ressemblent à quelque chose?
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  5. #5
    Nouveau membre du Club
    Inscrit en
    Février 2007
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 30
    Points : 28
    Points
    28
    Par défaut
    Je vais en effet creuser côté php ...
    Je voulais m'assurer que mon code python soit correcte.

  6. #6
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 283
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 283
    Points : 36 770
    Points
    36 770
    Par défaut
    Citation Envoyé par kazh75 Voir le message
    Je vais en effet creuser côté php ...
    Je voulais m'assurer que mon code python soit correcte.
    Pour l'instant, vous savez que ca communique mais avant d'utiliser le contenu, vérifier que le message: requête/headers/body est bien construit, bien reçu. Savoir s çà pêche côté client ou serveur reste ouvert.
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  7. #7
    Nouveau membre du Club
    Inscrit en
    Février 2007
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 30
    Points : 28
    Points
    28
    Par défaut
    Je confirme que le script python est correct et voici le code php pour récupérer les data au format json:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <?php
    $stream=file_get_contents("php://input");
    $obj = json_decode($stream);
     
    $handle = fopen("/tmp/debug_post_json.log", "ab");
    fwrite($handle, print_r($stream,true)."\n");
    fwrite($handle, print_r($obj,true)."\n");
    fclose($handle);
    ?>
    Voici le contenu du fichier '/tmp/debug_post_json.log'
    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
    [{"routing_account_id": "00001", "submit_message_id": "20110330192351111536"}, {"routing_account_id": "00001", "submit_message_id": "20110330192351624189"}]
    Array
    (
        [0] => stdClass Object
            (
                [routing_account_id] => 00001
                [submit_message_id] => 20110330192351111536
            )
     
        [1] => stdClass Object
            (
                [routing_account_id] => 00001
                [submit_message_id] => 20110330192351624189
            )
     
    )

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

Discussions similaires

  1. [Web Service] Web service qui appelle un autre web service.
    Par thorgal1612 dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 07/11/2014, 16h20
  2. [Prototype] Appel d'un web service qui retourne un JSON en javascript
    Par cocobelle89 dans le forum Bibliothèques & Frameworks
    Réponses: 13
    Dernier message: 30/05/2013, 18h50
  3. Appel d'un web service avec des paramètres
    Par pussyycat dans le forum Services Web
    Réponses: 3
    Dernier message: 04/07/2012, 15h38
  4. Réponses: 0
    Dernier message: 26/07/2011, 13h04
  5. [XML] Web service, qui envoi et recoit des fichiers XML
    Par j3r3m067 dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 19/11/2010, 11h13

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