Bonjour,
Juste après :
1 2 3
| #---------------------------------------------
# WEB SERVICE
#--------------------------------------------- |
rajoute la ligne suivante :
print "Content-type: text/html\n\n";
Cela "dit" au serveur que le script est destiné à générer une page HTML,
cela s'appelle le "content-type header", si on imprime quoi que ce soit
avant, ou si on l'oublie on obtient "Internal Server Error".
Attention aux deux "\n"
Nibroc
Envoyé par
elims
Bonjour,
Je suis actuellement sur un projet de création d'un service Web à partir d'un code métier déja créé (PERL). Etant totalement débutant à ce sujet, j'ai décidé de tester un tout petit service Web. J'ai codé quelques méthodes en PERL, puis codé un appel du service Web. Le problème est qu'il me dit que ma requête n'est pas valide et j'avoue que je ne comprends pas d'où ça vient. J'ai dû commencer à coder pour mon projet et j'ai été confronté au même problème donc je n'ai pas dû vraiment comprendre tout au sujet des services Web lol. voici le code de mon test.
COTE SERVEUR
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 44 45 46 47 48 49
|
#!/usr/local/bin/perl -w
use strict;
use warnings ;
use CGI ':standard';
use CGI::Carp qw(fatalsToBrowser warningsToBrowser);
use SOAP::Transport::HTTP ;
#---------------------------------------------
# WEB SERVICE
#---------------------------------------------
my $cgi = SOAP::Transport::HTTP::CGI
-> dispatch_to('calculatrice')
-> handle;
#----------------------------------------------
# PACKAGE PERL - MODULE
#----------------------------------------------
package calculatrice ;
## methodes
sub soustraction{
my($x,$y) = @_ ;
my $results = $x - $y ;
print ("le resultat est : ".$results."\n") ;
}
sub addition{
my ($a,$b) = @_ ;
my $resulta = $a + $b ;
print ("le resultat est : ".$resulta."\n") ;
}
sub multiplication{
my ($c,$d) = @_ ;
my $resultm = $c * $d ;
print ("le resultat est : ".$resultm."\n") ;
} |
COTE CLIENT
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
|
#!/usr/local/bin/perl -w
use strict;
use warnings ;
use CGI ':standard';
#use CGI::Carp qw(fatalsToBrowser warningsToBrowser);
use SOAP::Lite;
SOAP::Lite->import(+trace => qw(debug));
#--------------------------------------
# APPEL DU WEB SERVICE
#--------------------------------------
print ("#############");
print SOAP::Lite
-> uri('http://localhost/calculatrice')
-> proxy('http://www-cache:3128/')
-> addition(3,2)
-> result;
print "\n";
print ("#############"); |
Voici ce que je reçois comme erreur (la ligne 47 de mon code client c'est print SOAP::LITE)
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 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80
|
[jpellen@u900-bdd-1-85-6983:~/workspace/WS_test/cgi-bin]$ ./calculatrice_client.pl
SOAP::Transport::HTTP::Client::send_receive: POST http://www-cache:3128/ HTTP/1.1
Accept: text/xml
Accept: multipart/*
Accept: application/soap
Content-Length: 512
Content-Type: text/xml; charset=utf-8
SOAPAction: "http://localhost/calculatrice#addition"
<?xml version="1.0" encoding="UTF-8"?><soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" soap:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"><soap:Body><addition xmlns="http://localhost/calculatrice"><c-gensym3 xsi:type="xsd:int">3</c-gensym3><c-gensym5 xsi:type="xsd:int">2</c-gensym5></addition></soap:Body></soap:Envelope>
SOAP::Transport::HTTP::Client::send_receive: HTTP/1.0 400 Bad Request
Connection: close
Date: Thu, 14 Jan 2010 10:15:10 GMT
Via: 1.0 www-cache2.curie.fr:3128 (squid/2.7.STABLE6-20090401)
Server: squid/2.7.STABLE6-20090401
Content-Length: 2379
Content-Type: text/html
Content-Type: text/html; charset=iso-8859-1
Client-Date: Thu, 14 Jan 2010 10:15:10 GMT
Client-Peer: 10.3.0.200:3128
Client-Response-Num: 1
Title: ERREUR�: L'URL demand�e n'a pu �tre charg
X-Cache: MISS from www-cache.curie.fr
X-Cache-Lookup: NONE from www-cache.curie.fr:3128
X-Squid-Error: ERR_INVALID_REQ 0
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
<TITLE>ERREUR : L'URL demandée n'a pu être chargée</TITLE>
<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
</HEAD><BODY>
<H1>ERREUR</H1>
<H2>L'URL demandée n'a pu être chargée</H2>
<HR noshade size="1px">
<P>
En essayant de traiter la requête :
<PRE>
POST / HTTP/1.1
TE: deflate,gzip;q=0.3
Connection: TE, close
Accept: text/xml
Accept: multipart/*
Accept: application/soap
Host: www-cache:3128
User-Agent: SOAP::Lite/Perl/0.710.08
Content-Length: 512
Content-Type: text/xml; charset=utf-8
SOAPAction: "http://localhost/calculatrice#addition"
<?xml version="1.0" encoding="UTF-8"?><soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" soap:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"><soap:Body><addition xmlns="http://localhost/calculatrice"><c-gensym3 xsi:type="xsd:int">3</c-gensym3><c-gensym5 xsi:type="xsd:int">2</c-gensym5></addition></soap:Body></soap:Envelope>
</PRE>
<P>
L'erreur suivante a été rencontrée :
<UL>
<LI>
<STRONG>
Requête invalide
</STRONG>
</UL>
<P>
Quelque chose est invalide dans la requéte HTTP. Problèmes envisageables :
<UL>
<LI>Méthode de requête absente ou inconnue (GET, POST)
<LI>Absence d'URL
<LI>Absence d'identifiant HTTP (HTTP/1.0)
<LI>La requête est peut-être trop volumineuse
<LI>Champ <code>Content-Length</code> absent pour les requêtes POST ou PUT
<LI>Caractère illégal dans le nom de la machine, les soulignés (underscores) ne sont pas autorisés.
</UL>
</P>
<BR clear="all">
<HR noshade size="1px">
<ADDRESS>
Generated Thu, 14 Jan 2010 10:15:10 GMT by www-cache.curie.fr (squid/2.7.STABLE6-20090401)
</ADDRESS>
</BODY></HTML>
400 Bad Request at ./calculatrice_client.pl line 47 |
Merci d'avance si quelqu'un peut m'aclairer
Partager