Paramètres reçu par le CGI différent de celui envoyé
15 réponses
cyril scetbon
Bonjour,
J'observe un comportement erratique lors de la r=E9ception d'un
param=E8tre re=E7u par un CGI. En effet, je POST du XML =E0 un CGI dans
lequel une chaine est encod=E9e en base64. Cependant la chaine n'est pas
celle envoy=E9e :-(
use LWP::UserAgent;
use Data::Dumper;
use constant CORRECTION=3D>1;
my $smil=3D<<EOF;
<essai>
<content>
<text src=3D"http://localhost/remote_repository/file1.txt"
region=3D"Texte"/>
<text src=3D"http://localhost/remote_repository/file2.txt"
region=3D"Texte"/>
</content>
</essai>
EOF
use MIME::Base64;
$fxml=3D'xml=3D<?xml version=3D"1.0" encoding=3D"UTF-8" ?
>'.'<content>'.encode_base64($smil).'</content>';
my $ua =3D LWP::UserAgent->new;
$ua->agent($ua);
my $req =3D HTTP::Request->new(POST =3D>"http://localhost/perl/cgi.pl");
$req->content_type('application/x-www-form-urlencoded');
$req->content($fxml);
my $res =3D $ua->request($req);
if ($res->is_success) {
if(!CORRECTION)
{print Dumper decode_base64($1) if($res->content=3D~/
content>([^<]*)</)}
else
{
if($res->content=3D~/content>([^<]*)</)
{
my $c=3D$1;
$c=3D~s/ /+/g;
print Dumper decode_base64($c)
}
}
}
else {
print $res->status_line, $/;
}
cat cgi.pl :
---------------
use CGI qw/:cgi/;
use Data::Dumper;
print header();
print Dumper(param('xml'));
J'ai ajout=E9 une constante CORRECTION dans le premier script qui permet
de modifier le champ re=E7u pour obtenir le bon r=E9sultat. Par contre
j'ai bien peur que cette correction ne soit valable que pour cette
chaine dont je connais la valeur encod=E9e. Cependant je me demande
pourquoi la chaine re=E7u n'est pas la m=EAme que celle envoy=E9e !
si je positionne le content_type à text/xml ou application/xml le cgi ne voit plus rien :-(
Une petite formation complémentaire aux techniques HTTP semble s'imposer...
En attendant, lisez la doc de HTTP::Request::Common puis utilisez le content-type 'multipart/form-data' en POST et laissez faire le module pour régler l'encodage...
-- Paul Gaborit - <http://perso.enstimac.fr/~gaborit/> Perl en français - <http://perl.enstimac.fr/>
À (at) 26 Feb 2007 05:56:41 -0800,
"cyril scetbon" <cscetbon@gmail.com> écrivait (wrote):
On 26 fév, 13:42, Nicolas George <nicolas$geo...@salle-s.org> wrote:
si je positionne le content_type à text/xml ou application/xml le cgi
ne voit plus rien :-(
Une petite formation complémentaire aux techniques HTTP semble
s'imposer...
En attendant, lisez la doc de HTTP::Request::Common puis utilisez le
content-type 'multipart/form-data' en POST et laissez faire le module
pour régler l'encodage...
--
Paul Gaborit - <http://perso.enstimac.fr/~gaborit/>
Perl en français - <http://perl.enstimac.fr/>
si je positionne le content_type à text/xml ou application/xml le cgi ne voit plus rien :-(
Une petite formation complémentaire aux techniques HTTP semble s'imposer...
En attendant, lisez la doc de HTTP::Request::Common puis utilisez le content-type 'multipart/form-data' en POST et laissez faire le module pour régler l'encodage...
-- Paul Gaborit - <http://perso.enstimac.fr/~gaborit/> Perl en français - <http://perl.enstimac.fr/>
Nicolas George
"cyril scetbon" wrote in message :
si je positionne le content_type à text/xml ou application/xml le cgi ne voit plus rien :-(
Normal. Tu n'as pas bien lu la doc du module CGI. En particulier le bout qui commence par « If POSTed data is not of type application/x-www-form-urlencoded ».
"cyril scetbon" wrote in message
<1172498201.758481.276320@m58g2000cwm.googlegroups.com>:
si je positionne le content_type à text/xml ou application/xml le cgi
ne voit plus rien :-(
Normal. Tu n'as pas bien lu la doc du module CGI. En particulier le bout qui
commence par « If POSTed data is not of type
application/x-www-form-urlencoded ».
si je positionne le content_type à text/xml ou application/xml le cgi ne voit plus rien :-(
Normal. Tu n'as pas bien lu la doc du module CGI. En particulier le bout qui commence par « If POSTed data is not of type application/x-www-form-urlencoded ».
Nicolas George
Paul Gaborit wrote in message :
utilisez le content-type 'multipart/form-data' en POST
Non, s'il transmet du XML, le content-type doit indiquer du XML.
Paul Gaborit wrote in message <wt9ps7wstmo.fsf@vaugirard.enstimac.fr>:
utilisez le
content-type 'multipart/form-data' en POST
Non, s'il transmet du XML, le content-type doit indiquer du XML.
utilisez le content-type 'multipart/form-data' en POST
Non, s'il transmet du XML, le content-type doit indiquer du XML.
cyril scetbon
On 26 fév, 18:52, Nicolas George <nicolas$ wrote:
"cyril scetbon" wrote in message
:
si je positionne le content_type à text/xml ou application/xml le cgi ne voit plus rien :-(
Normal. Tu n'as pas bien lu la doc du module CGI. En particulier le bout qui commence par « If POSTed data is not of type application/x-www-form-urlencoded ».
Bonne déduction :-)
On 26 fév, 18:52, Nicolas George <nicolas$geo...@salle-s.org> wrote:
si je positionne le content_type à text/xml ou application/xml le cgi
ne voit plus rien :-(
Normal. Tu n'as pas bien lu la doc du module CGI. En particulier le bout qui
commence par « If POSTed data is not of type
application/x-www-form-urlencoded ».
si je positionne le content_type à text/xml ou application/xml le cgi ne voit plus rien :-(
Normal. Tu n'as pas bien lu la doc du module CGI. En particulier le bout qui commence par « If POSTed data is not of type application/x-www-form-urlencoded ».
Bonne déduction :-)
Paul Gaborit
À (at) 26 Feb 2007 18:03:59 GMT, Nicolas George <nicolas$ écrivait (wrote):
Paul Gaborit wrote in message :
utilisez le content-type 'multipart/form-data' en POST
Non, s'il transmet du XML, le content-type doit indiquer du XML.
Ah oui ! Désolé, je n'avais pas bien lu le début de l'enfilade. Enfin, en tous cas, le 'content-type' n'était pas le bon...
-- Paul Gaborit - <http://perso.enstimac.fr/~gaborit/> Perl en français - <http://perl.enstimac.fr/>
À (at) 26 Feb 2007 18:03:59 GMT,
Nicolas George <nicolas$george@salle-s.org> écrivait (wrote):
Paul Gaborit wrote in message <wt9ps7wstmo.fsf@vaugirard.enstimac.fr>:
utilisez le
content-type 'multipart/form-data' en POST
Non, s'il transmet du XML, le content-type doit indiquer du XML.
Ah oui ! Désolé, je n'avais pas bien lu le début de l'enfilade. Enfin,
en tous cas, le 'content-type' n'était pas le bon...
--
Paul Gaborit - <http://perso.enstimac.fr/~gaborit/>
Perl en français - <http://perl.enstimac.fr/>
À (at) 26 Feb 2007 18:03:59 GMT, Nicolas George <nicolas$ écrivait (wrote):
Paul Gaborit wrote in message :
utilisez le content-type 'multipart/form-data' en POST
Non, s'il transmet du XML, le content-type doit indiquer du XML.
Ah oui ! Désolé, je n'avais pas bien lu le début de l'enfilade. Enf in, en tous cas, le 'content-type' n'était pas le bon...
-- Paul Gaborit - <http://perso.enstimac.fr/~gaborit/> Perl en français - <http://perl.enstimac.fr/>
Résolu en conservant le content_type à application/x-www-form- urlencoded mais en utilisant uri_escape sur la partie POSTed.
@+
Nicolas George
"cyril scetbon" wrote in message :
Résolu en conservant le content_type à application/x-www-form- urlencoded mais en utilisant uri_escape sur la partie POSTed.
En d'autres termes, je me casse les pieds à t'indiquer une solution propre et fonctionnelle, et tu t'obstines à utiliser une solution crade et bancale. Ça fait plaisir, tiens...
"cyril scetbon" wrote in message
<1172568862.095215.147020@j27g2000cwj.googlegroups.com>:
Résolu en conservant le content_type à application/x-www-form-
urlencoded mais en utilisant uri_escape sur la partie POSTed.
En d'autres termes, je me casse les pieds à t'indiquer une solution propre
et fonctionnelle, et tu t'obstines à utiliser une solution crade et bancale.
Ça fait plaisir, tiens...
Résolu en conservant le content_type à application/x-www-form- urlencoded mais en utilisant uri_escape sur la partie POSTed.
En d'autres termes, je me casse les pieds à t'indiquer une solution propre et fonctionnelle, et tu t'obstines à utiliser une solution crade et bancale. Ça fait plaisir, tiens...