Beefy Boxes and Bandwidth Generously Provided by pair Networks
good chemistry is complicated,
and a little bit messy -LW

Re: REST::Client + Request Body

by hippo (Bishop)
on Oct 13, 2020 at 08:32 UTC ( #11122763=note: print w/replies, xml ) Need Help??

in reply to REST::Client + Request Body

Here is an SSCCE which works perfectly for me using your provided "body" data.

#!/usr/bin/env perl use strict; use warnings; use REST::Client; my $rest = REST::Client->new ({ host => '' }); my $body ='{ "includes" : [ { "ids" : ["fbb7c736-852f-4158-aae3-1f97bc755cec"], "observationName" : "sql_batches" } ], "startTime" : 1602043200000, "endTime" : 1602129599000, "granularity" : 86400000, "numberOfValue" : 1, "retrievalType" : "RAW" }'; my $headers = { Accept => 'application/json', 'Content-type' => 'application/json', }; $rest->POST ('/anything', $body, $headers); print $rest->responseContent;

You will see that I have quoted the Content-type key, perhaps you should too?


Replies are listed 'Best First'.
Re^2: REST::Client + Request Body
by derby (Abbot) on Oct 13, 2020 at 11:35 UTC

    hippo++ but I think you sold yourself short by not pointing out the most important part of your SSCCE:

    print $rest->responseContent;
    Without knowing the what the REST API actually returned, it would be difficult for any monk here to help out. I would also suggest:
    print $rest->responseCode();
    and check the response code against the documentation. It would not be odd for an API to return a non-successful code with no body or a blank body -- which would be unparseable.

    My own approach to APIs is to always try doing it with curl first. Sure setting headers and json bodies with curl can be a bit daunting but using curl via the command line is a great way to explore and/or debug a REST api.

Re^2: REST::Client + Request Body
by jcb (Parson) on Oct 14, 2020 at 01:15 UTC

    Our questioner should also quote the "Auth-Token" key and use strict; which would have caught that error. Alternately, Perl HTTP handling modules recognize Content_Type as meaning "Content-Type" and the underscore allows the fat comma autoquoting to work as intended.

Re^2: REST::Client + Request Body
by perlfan (Vicar) on Oct 13, 2020 at 15:39 UTC
      I don't see the value of making such a statement.

Log In?

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

How do I use this? | Other CB clients
Other Users?
Others scrutinizing the Monastery: (5)
As of 2023-02-02 10:33 GMT
Find Nodes?
    Voting Booth?
    I prefer not to run the latest version of Perl because:

    Results (17 votes). Check out past polls.