I wanted to build an awesome place for people to discuss module specific issues, but I don't have any more time for this, and there are much better places to discuss Perl-related issues. I'd recommend asking your question on Stack Overflow or on Perl Monks.
If you are looking for a Perl tutorial or Perl-related news, I hope these links will serve you well.
Posted on 2009-12-09 15:20:40-08 by dklein06
New to SOAP::WSDL
Hi All
wsdl2perl.pl worked well for me under Ubuntu karmic
I also succeed nicely in placing a request over https
The place where I am a bit at a loss is how:
1) use the response of the server (aka how to access various fields in header and body of the soap response
2) how to influence the header of the request, I need to insert a SessionToken
Any pointer to documentation or sample code would be greatly appreciated
Kind Regards
Direct Responses: 11902 | Write a response
Posted on 2009-12-09 16:52:00-08 by dklein06 in response to 11901
Re: New to SOAP::WSDL
Hey, I did progress!

In this forum there is the magic thread
http://www.cpanforum.com/posts/7724
That is enough hints for me to get started getting values out of my responses
Leaving me with the problem of inserting a value into my request header
So I do not close question completely yet Thanks
Direct Responses: 11909 | Write a response
Posted on 2009-12-10 16:00:06-08 by dklein06 in response to 11902
Re: New to SOAP::WSDL
Hi I did progress again, and solved my issues/questions so far
I will post here a little example based on the Betfair public API, hopping it will help the next ones wanting to try SOAP::WSDL

follow instruction and have SOAP::WSDL installed on your box.
also install the Crypt::SSLeay package as API is using HTTPS.

then from command line of your box:
perl wsdl2perl.pl -b ./w2p https://api.betfair.com/global/v3/BFGlobalService.wsdl

then go into the subdir w2p and run following script
#!/usr/bin/perl use strict; use warnings; use Data::Dumper; use MyInterfaces::BFGlobalService::BFGlobalService; my $bfs = MyInterfaces::BFGlobalService::BFGlobalService->new( ); print "\n ... going to log in now!\n"; #$bfs->no_dispatch( 1 ); my $sres = $bfs->login( { request => { username => 'your_betfair_id', password => 'your_betfair_pwd', productId=> 82 } } ); die $sres if not $sres; print $sres; print Dumper $sres->as_hash_ref(); print "\n\n\n"; my $obj = $sres->get_Result()->get_errorCode(); print "$obj \n"; my $validUntil = $sres->get_Result()->get_validUntil(); print "$validUntil \n"; my $sesstoken = $sres->get_Result()->get_header()->get_sessionToken(); print "$sesstoken \n"; print "\n ... going to send a keepAlive\n"; # $bfs->no_dispatch( 1 ); my $resp = $bfs->keepAlive ( { request => { header => { sessionToken => $sesstoken } } } ); die $resp if not $resp; print $resp; print Dumper $resp->as_hash_ref(); print "\n\n\n"; print $resp->get_FOO();

this will give you following output:

dom@dom-inspiron:~/Soap-Wsdl-Betfair/sources/w2p$ perl ../test3.pl + ... going to log in now! <loginResponse xmlns="http://www.betfair.com/publicapi/v3/BFGlobalService/"><Result><header xmlns=" +"><errorCode>OK</errorCode><minorErrorCode xmlns=""></minorErrorCode><sessionToken xmlns="">tiZEmQ +AidIWYbdWe9JLWjptwRH8hLzmpRuARujm1M=</sessionToken><timestamp xmlns="">2009-12-10T16:40:50.081Z</t +imestamp></header><currency xmlns="">EUR</currency><errorCode xmlns="">OK</errorCode><minorErrorCo +de xmlns=""></minorErrorCode><validUntil xmlns="">0001-01-01T00:00:00.000Z</validUntil></Result></ +loginResponse>$VAR1 = { + 'Result' => { + 'currency' => 'EUR', + 'validUntil' => '0001-01-01T00:00:00.000Z', + 'errorCode' => 'OK', + 'minorErrorCode' => undef, + 'header' => { + 'sessionToken' => 'tiZEmQAidIWYbdWe9JLWjptwRH8hLzmpRuARujm1M= +', 'errorCode' => 'OK', + 'timestamp' => '2009-12-10T16:40:50.081Z', + 'minorErrorCode' => undef + } + } + }; + OK 0001-01-01T00:00:00.000Z tiZEmQAidIWYplbdWe9JLWjptwRH8hLzmpRuARujm1M= ... going to send a keepAlive <keepAliveResponse xmlns="http://www.betfair.com/publicapi/v3/BFGlobalService/"><Result><header xml +ns=""><errorCode>OK</errorCode><minorErrorCode xmlns=""></minorErrorCode><sessionToken xmlns="">ti +ZEmQAidIWYbdWe9JLWjptwRH8hLzmpRuARujm1M=</sessionToken><timestamp xmlns="">2009-12-10T16:40:51.225 +Z</timestamp></header><apiVersion xmlns=""></apiVersion><minorErrorCode xmlns=""></minorErrorCode> +</Result></keepAliveResponse>$VAR1 = { 'Result' => { + 'minorErrorCode' => undef, + 'apiVersion' => undef, + 'header' => { + 'sessionToken' => 'tiZEmQAidIWYbdWe9JLWjptwRH8hLzmpRuARujm1M= +', 'errorCode' => 'OK', + 'timestamp' => '2009-12-10T16:40:51.225Z', + 'minorErrorCode' => undef + } + } + }; + Can't locate object method "get_FOO" via package "MyElements::keepAliveResponse". Valid methods are: get_Result, set_Result at /usr/local/share/perl/5.10.0/SOAP/WSDL/XSD/Typelib/ComplexType.pm line 68 SOAP::WSDL::XSD::Typelib::ComplexType::AUTOMETHOD('MyElements::keepAliveResponse=SCALAR(0x9 +b01d00)', 162536704) called at /usr/local/share/perl/5.10.0/Class/Std.pm line 546 + + Class::Std::AUTOLOAD('MyElements::keepAliveResponse=SCALAR(0x9b01d00)') called at ../test3. +pl line 49

This small example should give you some hints about getting return values,
about putting a value in the body or header segment of a soap request.

I did not make the complete use of the power of SOAP::WSDL yet,
but have to say: ... THANK YOU MARTIN! Nice clean job all around.

Hoping this post may help others to find the first leads into this module
Tchao!
Direct Responses: 11996 | Write a response
Posted on 2009-12-21 01:28:57-08 by denman in response to 11909
Re: New to SOAP::WSDL
Thanks for this example though I tried to retrieve the WSDL file for the Betdaq API also at:
https://api.betdaq.com/v2.0/API.wsdl
using the command:
wsdl2perl.pl -b ./w2p https://api.betdaq.com/v2.0/API.wsdl
And it complains horribly with lots of the following:
Deep recursion on anonymous subroutine at /usr/lib/perl5/Template/Document.pm line 155.
Failing to build the necessary directory structure. Any ideas?
Direct Responses: 11997 | Write a response
Posted on 2009-12-21 07:48:13-08 by dklein06 in response to 11996
Re: New to SOAP::WSDL
Hi
As I said in previous email I am a newcomer to Soap::Wsdl
But to get my example working I had to read through the whole forum
And there you find:

http://www.cpanforum.com/posts/9544
That looks to me as applying to your case
Good Luck
Direct Responses: 12000 | Write a response
Posted on 2009-12-21 21:27:38-08 by denman in response to 11997
Re: New to SOAP::WSDL
Thanks for the good pointer - this indeed avoided the recursion issue. However another issue has become apparent in that not all subdirectories and functions are created - so only MyTypes and MyInterfaces, not MyElements.
It looks like someone else has had this problem though I can't see a reply to it:
http://www.cpanforum.com/posts/11896
Any idea how to get all directories? I'll also cross post to their thread.
Nb: If you are interested in betting exchange APIs, the Betdaq one is also free so you can see the issues for yourself:
https://api.betdaq.com/v2.0/API.wsdl
Direct Responses: Write a response