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 :

[Web Service][SOAP] Compression des données avec NuSOAP ?


Sujet :

Bibliothèques et frameworks PHP

  1. #1
    Membre à l'essai
    Inscrit en
    Novembre 2007
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 20
    Points : 13
    Points
    13
    Par défaut [Web Service][SOAP] Compression des données avec NuSOAP ?
    Bonjour,

    j'ai mis en place un webservice conçu avec la bibliothèque nusoap, ce dernier me renvoi des données xml, mais le flux xml est devenu volumineux avec le temps.

    Y'a t'il un moyen de compresser les données envoyées par le serveur (nusoap), et de les décompresser chez le client (nusoap) ?

    J'ai cherché sur le net, mais il n'y a pas d'explications pour NuSOAP.

    Merci de votre aide.

    Cordialement

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    957
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 957
    Points : 1 177
    Points
    1 177
    Par défaut
    Le format SOAP n'a pas de compression native. Il faudra le faire manuellement si tu veux reduire la taille de tes flux. NuSOAP ni est pour rien il applique le format. Cela dit il est possible d'étendre SOAP pour lui permette de compresser les données mais il faut pour cela modifier le client et le serveur.

  3. #3
    Membre à l'essai
    Inscrit en
    Novembre 2007
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 20
    Points : 13
    Points
    13
    Par défaut
    Salut batataw,

    merci de ta réponse,

    aurait tu une ou plusieurs source vers laquelle me diriger s'il te plait?

    sur cette page j'avais vu que la compression était possible, mais il ne s'agissait pas de nusoap mais d'une autre bibliothèque :

    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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    Exemple avec SoapClient
     
     
    <?php
     
    $client = new SoapClient("some.wsdl");
     
    $client = new SoapClient("some.wsdl", array('soap_version'   => SOAP_1_2));
     
    $client = new SoapClient("some.wsdl", array('login'          => "some_name",
                                                'password'       => "some_password"));
     
    $client = new SoapClient("some.wsdl", array('proxy_host'     => "localhost",
                                                'proxy_port'     => 8080));
     
    $client = new SoapClient("some.wsdl", array('proxy_host'     => "localhost",
                                                'proxy_port'     => 8080,
                                                'proxy_login'    => "some_name",
                                                'proxy_password' => "some_password"));
     
    $client = new SoapClient("some.wsdl", array('local_cert'     => "cert_key.pem"));
     
    $client = new SoapClient(null, array('location' => "http://localhost/soap.php",
                                         'uri'      => "http://test-uri/"));
     
    $client = new SoapClient(null, array('location' => "http://localhost/soap.php",
                                         'uri'      => "http://test-uri/",
                                         'style'    => SOAP_DOCUMENT,
                                         'use'      => SOAP_LITERAL));
     
    $client = new SoapClient("some.wsdl", 
      array('compression' => SOAP_COMPRESSION_ACCEPT | SOAP_COMPRESSION_GZIP));
     
    $server = new SoapClient("some.wsdl", array('encoding'=>'ISO-8859-1'));
     
    class MyBook {
            public $title;
            public $author;
    }
     
    $server = new SoapClient("books.wsdl", array('classmap' => array('book' => "MyBook")));
     
    ?>
    Merci.

  4. #4
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2004
    Messages
    318
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2004
    Messages : 318
    Points : 362
    Points
    362
    Par défaut
    Salut !

    En fait ce n'est pas une autre bibliothèque, ce sont les fonctions natives de PHP 5. Donc si tu développe sous PHP 4 voire une version antérieure, il faut que tu cherches une autre méthode. Je n'en connais pas d'autres par contre, désolé.

    Bon courage

  5. #5
    Membre à l'essai
    Inscrit en
    Novembre 2007
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 20
    Points : 13
    Points
    13
    Par défaut
    Ok bien noté,

    je développe actuellement en php version 5.2 ;-).

    Aurais-tu plus d'infos pour me permettre d'avancer un chtit peu ?

    merci

  6. #6
    Membre éprouvé
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    957
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 957
    Points : 1 177
    Points
    1 177
    Par défaut
    Effectivement c'est une bonne piste, tu peux tres bien compresser les transferts des données HTTP independament de SOAP. Il suffit pour cela de specifier dans l'entete d'utiliser la compression GZIP. En revanche je ne sais pas si la réponse sera compressée.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Accept-Encoding: gzip,deflate

  7. #7
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2004
    Messages
    318
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2004
    Messages : 318
    Points : 362
    Points
    362
    Par défaut
    Je n'ai jamais utilisé de compression de données. Mais comme à dit batataw, c'est fort probable qu'il faut modifier aussi le serveur pour décompresser les données reçues.

    Enfin du coup en passant si t'es sur PHP 5, je te conseille de passer avec les fonctions natives de PHP et de laisser tomber NuSOAP ^^

    D'ailleurs je te fait circuler ca on sait jamais !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    If you want to use compression there is a missing parameter in the example above:
     
    <?php
    $client = new SoapClient("some.wsdl",
      array('compression' => SOAP_COMPRESSION_ACCEPT | SOAP_COMPRESSION_GZIP | 5));
    ?>
     
    If you use SOAP_COMPRESSION_GZIP you have to add the compression level. Otherwise it will not compress the request. Took me some hours ;)

    Sinon également faut surement changer le WSDL si tu passes des données compressées, enfin je pense.

    T'as essayé de juste activer la compression dans ta déclaration du client ? Et voir déjà si cela fonctionne

  8. #8
    Membre à l'essai
    Inscrit en
    Novembre 2007
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 20
    Points : 13
    Points
    13
    Par défaut
    à destination de batataw -->

    arf, cool, mais bon je préfèrerais quand meme trouver quelqu'un qui a déja joué avec la compression sur les flux SOAP via nusoap, cela m'éviterais de galérer a recoder le client et le serveur nusoap (plus de 7000 lignes de code a eux deux).

    galère galère.


  9. #9
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2004
    Messages
    318
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2004
    Messages : 318
    Points : 362
    Points
    362
    Par défaut
    Ah oui effectivement...
    Je ne peux pas t'aider plus, je n'ai jamais touché à NuSOAP.

    Bonnne recherche et bon courage

  10. #10
    Membre à l'essai
    Inscrit en
    Novembre 2007
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 20
    Points : 13
    Points
    13
    Par défaut
    Merci Guybrush113,

    en fait nous utilisons Nusoap car les fonctionnalités SOAP de php5 ne semble pas fonctionner correctement pour un webservice sécurisé https.

  11. #11
    Membre éprouvé
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    957
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 957
    Points : 1 177
    Points
    1 177
    Par défaut
    Dans Nusoap, tu as une method setHeader, tu devrais l'essayer.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    setHeader('Accept-Encoding', 'gzip,deflate');

  12. #12
    Membre à l'essai
    Inscrit en
    Novembre 2007
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 20
    Points : 13
    Points
    13
    Par défaut
    la méthode

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    setHeaders('Accept-Encoding', 'gzip,deflate');
    semble fonctionner.

    Reste plus qu'à vérifier avec une grosse quantité de données. je vous tiens au courant des résultat de tests.

    Merci pour ton aide batataw.

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 28/12/2015, 11h05
  2. [XL-2007] Web Service SOAP Fichier WSDL / Extraction des données dans un classeur
    Par crusaders dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 08/12/2014, 12h05
  3. Web service soap transfert de fichier avec reprise
    Par Zugg dans le forum Web & réseau
    Réponses: 6
    Dernier message: 23/07/2013, 09h41
  4. affichage des données provenant d'un web service soap dans une listview
    Par nagca dans le forum API standards et tierces
    Réponses: 1
    Dernier message: 04/07/2011, 17h11

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