Bonjour,

Après avoir réussi à configurer correctement mon proxy, je me suis attaqué un test du module SOAP::Lite. Je suis donc en train de suivre un tuturiel trouvé sur internet : un extrait de "Web Services with Per", de O'Reilly.

J'ai donc du installer le module XML::RSS pour tester un des codes donné en exemple. Voici le code en question :

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
#!/usr/bin/perl -w
use strict;
use SOAP::Lite;
use XML::RSS;
my $user = shift || die "Usage: $0 userID [ usernick ]\n\nStopped";
my $nick = shift || "#$user";
my $host = 'http://use.perl.org';
my $uri = "$host/Slash/Journal/SOAP";
my $proxy = "$host/journal.pl";
# SOAP material starts here:
my $journal = SOAP::Lite->uri($uri)->proxy($proxy);
my $results = $journal->get_entries($user, 15)->result;
my $rss = XML::RSS->new(version => '1.0');
$rss->channel(title => "use.perl.org journal of $nick",'link' => $proxy,
description =>"The use.perl.org journal of $nick");
$rss->add_item(title => $_->{subject},'link' => $_->{url})for (@$results);
print STDOUT $rss->as_string;
exit;
Le premier problème est que la structure du site ou l'on récupère le flux semble en effet avoir changé :
-le répertoire http://use.perl.org/Slash/* n'existe pas/plus
-le fichier journal.pl de chaque utilisateur semble se trouver dans http://use.perl.org/~user/journal/rss/

J'ai donc "adapté" le code aux modifications :

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
#!/usr/bin/perl -w
use strict;
use SOAP::Lite;
use XML::RSS;
my $user = shift || die "Usage: $0 userID [ usernick ]\n\nStopped";
my $nick = shift || "#$user";
my $host = 'http://use.perl.org';
#my $uri = "$host/Slash/Journal/SOAP";
my $uri = "$host/~$user/journal/rss";
#my $proxy = "$host/journal.pl";
my $proxy = "$uri/journal.pl";
 
# SOAP material starts here:
my $journal = SOAP::Lite
	->uri($uri)
	->proxy($proxy);
 
#my $results = $journal->get_entries($user, 15)->result;
my $results = $journal->get_entries(10)->result;
my $rss = XML::RSS
	->new(version => '1.0');
 
$rss->channel(title => "use.perl.org journal of $nick",
	'link' => $proxy,
	description =>"The use.perl.org journal of $nick");
 
$rss->add_item(title => $_->{subject},
	'link' => $_->{url}) for (@$results);
 
print STDOUT $rss->as_string;
exit;
Cependant, même si je rentre en paramètre un nom d'utilisateur vadlide, je n'arrive pas à récupérer ses données...

Voici ce que je récupère lorsque j'exécute le script :
C:\soap\perl>perl exempleSOAPLiteRSS.pl ovid
<?xml version="1.0" encoding="UTF-8"?>

<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns="http://purl.org/rss/1.0/"
xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:syn="http://purl.org/rss/1.0/modules/syndication/"
xmlns:admin="http://webns.net/mvcb/"
>

<channel rdf:about="http://use.perl.org/~ovid/journal/rss/journal.pl">
<title>use.perl.org journal of #ovid</title>
<link>http://use.perl.org/~ovid/journal/rss/journal.pl</link>
<description>The use.perl.org journal of #ovid</description>
<items>
<rdf:Seq>
</rdf:Seq>
</items>
</channel>

</rdf:RDF>
Je ne vois pas comment faire?!