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 16/04/2008, 11h05   #1
Invité de passage
 
Inscription : novembre 2007
Messages : 20
Détails du profil
Informations forums :
Inscription : novembre 2007
Messages : 20
Points : 4
Points : 4
Par défaut [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
lasdou15 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/04/2008, 14h47   #2
Membre émérite
 
Inscription : septembre 2007
Messages : 951
Détails du profil
Informations forums :
Inscription : septembre 2007
Messages : 951
Points : 948
Points : 948
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.
batataw est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/04/2008, 14h59   #3
Invité de passage
 
Inscription : novembre 2007
Messages : 20
Détails du profil
Informations forums :
Inscription : novembre 2007
Messages : 20
Points : 4
Points : 4
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 :
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.
lasdou15 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/04/2008, 15h17   #4
Membre éclairé
 
Homme
Développeur Web
Inscription : avril 2004
Messages : 319
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 28
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 : 319
Points : 325
Points : 325
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
Guybrush113 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/04/2008, 15h20   #5
Invité de passage
 
Inscription : novembre 2007
Messages : 20
Détails du profil
Informations forums :
Inscription : novembre 2007
Messages : 20
Points : 4
Points : 4
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
lasdou15 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/04/2008, 15h44   #6
Membre émérite
 
Inscription : septembre 2007
Messages : 951
Détails du profil
Informations forums :
Inscription : septembre 2007
Messages : 951
Points : 948
Points : 948
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 :
1
2
 
Accept-Encoding: gzip,deflate
batataw est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/04/2008, 15h51   #7
Membre éclairé
 
Homme
Développeur Web
Inscription : avril 2004
Messages : 319
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 28
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 : 319
Points : 325
Points : 325
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 :
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
Guybrush113 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/04/2008, 15h52   #8
Invité de passage
 
Inscription : novembre 2007
Messages : 20
Détails du profil
Informations forums :
Inscription : novembre 2007
Messages : 20
Points : 4
Points : 4
à 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.

lasdou15 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/04/2008, 15h53   #9
Membre éclairé
 
Homme
Développeur Web
Inscription : avril 2004
Messages : 319
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 28
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 : 319
Points : 325
Points : 325
Ah oui effectivement...
Je ne peux pas t'aider plus, je n'ai jamais touché à NuSOAP.

Bonnne recherche et bon courage
Guybrush113 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/04/2008, 15h57   #10
Invité de passage
 
Inscription : novembre 2007
Messages : 20
Détails du profil
Informations forums :
Inscription : novembre 2007
Messages : 20
Points : 4
Points : 4
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.
lasdou15 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/04/2008, 12h00   #11
Membre émérite
 
Inscription : septembre 2007
Messages : 951
Détails du profil
Informations forums :
Inscription : septembre 2007
Messages : 951
Points : 948
Points : 948
Dans Nusoap, tu as une method setHeader, tu devrais l'essayer.
Code :
1
2
 
setHeader('Accept-Encoding', 'gzip,deflate');
batataw est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/04/2008, 12h14   #12
Invité de passage
 
Inscription : novembre 2007
Messages : 20
Détails du profil
Informations forums :
Inscription : novembre 2007
Messages : 20
Points : 4
Points : 4
la méthode

Code :
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.
lasdou15 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



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


 
 
 
 
Partenaires

Hébergement Web