Beefy Boxes and Bandwidth Generously Provided by pair Networks
Perl Monk, Perl Meditation
 
PerlMonks  

Re: Consuming A Web Service

by NetWallah (Canon)
on Nov 02, 2016 at 03:18 UTC ( [id://1175101]=note: print w/replies, xml ) Need Help??


in reply to Consuming A Web Service

As others have pointed out, it looks like your web service returns JSON by default.

If you want XML, you need to ask for it - in your REQUEST's header :

my $req = HTTP::Request->new('GET', 'Accept' => 'application/xml');
(Untested).

        ...it is unhealthy to remain near things that are in the process of blowing up.     man page for WARP, by Larry Wall

Replies are listed 'Best First'.
Re^2: Consuming A Web Service
by pkupnorth (Novice) on Nov 02, 2016 at 16:34 UTC

    Thanks, NetWallah.

    I had to slightly modify the syntax above - it should be just Accept => 'application/xml' - but the general idea worked. I am now getting the same XML back that my browser gets.

    Regards,
    pkupnorth

      The modification should not have been necessary. The two are equivalent.

      The "=>" operator auto-quotes the argument to its left, so the single-quotes I used are not strictly necessary, but it is a matter of style, and they should work fine.

      Let me know what error you got when the quotes were in place.

              ...it is unhealthy to remain near things that are in the process of blowing up.     man page for WARP, by Larry Wall

        NetWallah, here is the code with your suggestion as listed:

        use strict; use warnings; use LWP::UserAgent; use HTTP::Request::Common qw(GET); my $ua = LWP::UserAgent->new; my $endpoint = 'Http://www.somecompany.com:8081/api/ourCompany/getASN +'; my $req = HTTP::Request->new('GET', 'Accept' => 'application/xml'); $req->url($endpoint); my $resp = $ua->request($req); my $message = $resp->content; print "printing message: $message\n\n";

        I get the error message "bad header argument at code.pl line 8." Which is the HTTP::Request->new line.


        Here is the working code with the slight modifications:

        use strict; use warnings; use LWP::UserAgent; use HTTP::Request::Common qw(GET); use XML::Simple; my $ua = LWP::UserAgent->new; my $endpoint = 'Http://www.somecompany.com:8081/api/ourCompany/getASN +'; my $req = HTTP::Request->new(GET => $endpoint); $req->header(Accept => 'application/xml'); $req->url($endpoint); my $resp = $ua->request($req); my $message = $resp->content; print "printing message: $message\n\n";

        Thanks,
        pkupnorth

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://1175101]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others perusing the Monastery: (3)
As of 2024-04-25 17:31 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found