in reply to Re: Consuming A Web Service
in thread Consuming A Web Service

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

Replies are listed 'Best First'.
Re^3: Consuming A Web Service
by NetWallah (Canon) on Nov 02, 2016 at 21:38 UTC
    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

        pkupnorth, you changed 3 things:

        • Changed from 'GET' to GET => $endpoint
        • Moved the 'Accept' to a separate $req->header() line
        • Changed from 'Accept' => ... to Accept => ...

        If you do them one at a time, you will find that it was moving the Accept from the ->new(...) to a separate $req->header() line that got rid of the "Bad header argument at code.pl line 8." error, not the removal of the single quotes.

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

        update: fixed the order of the quoted version in the bullet list

        update 2: added "not the removal of the single quotes"; removed an unnecessary sentence that was unnecessarily argumentative in tone.

        Thanks, pryrt for the analysis.

        The syntax for HTTP::Request's "new" method requires arguments in pairs, so my previous suggestion was wrong.

        It should have been:

        my $req = HTTP::Request->new(GET => $endpoint, Accept => 'application/xml');
        The "Accept" and "GET" can optionally be quoted.

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