Beefy Boxes and Bandwidth Generously Provided by pair Networks
No such thing as a small change
 
PerlMonks  

Re: REST::Client + Request Body

by hippo (Bishop)
on Oct 13, 2020 at 08:32 UTC ( [id://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 => 'http://httpbin.org' }); 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.

    -derby
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?
Username:
Password:

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

How do I use this?Last hourOther CB clients
Other Users?
Others romping around the Monastery: (5)
As of 2024-03-29 09:00 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found