http://qs321.pair.com?node_id=11115954

GertMT has asked for the wisdom of the Perl Monks concerning the following question:

hello all,

trying to post some JSON while using HTTP::Tiny. To my idea I have an okay structure of the data to post and I'm also authorised to post however I get the message 'content' => 'Cannot parse URL: \'HASH(0x7fc154e1fb50)\'.

The full code and result I see from data::Dumper is pasted below. Maybe someone can tell me what I'm doing wrong?

Best,
Gert
sub create_external_inv { my $headers = { Accept => "application/json", 'Content-Type' => "application/json", Authorization => "Bearer 123" }; my $url = "https://moneybird.com/api/v2/123/external_sales_invoice +s"; my $data = ( { external_sales_invoices => { "reference" => "M-8426", "date" => "2020-03-14", "contact_id" => 456, "details_attributes" => [ { "description" => "coffee", "price" => 2.25, "tax_rate_id" => 891 } ] } } ); my $agent = HTTP::Tiny->new; my $res = $agent->post( { url => $url, content => $data, headers => $heade +rs } ); print Dumper $res; if ( $res->{success} ) { print "Okay!\n"; } else { print "\n\Nope...\n\n"; } }

The result I see in the log from my Dancer2 app

'content' => 'Cannot parse URL: \'HASH(0x7fc154e1fb50)\' ', 'url' => { 'content' => { 'external_sales_invoices' => { 'reference' => 'M-8426', 'details_attributes' => [{'tax_rate_id' => '891, 'description' => 'coffee', 'price' => '2.25}], 'date' => '2020-03-14', 'contact_id' => '456 } }, 'headers' => { 'Content-Type' => 'application/json', 'Accept' => 'application/json', 'Authorization' => 'Bearer 123' }, 'url' => 'https://moneybird.com/api/v2/123/external_sales_i +nvoices' }, 'reason' => 'Internal Exception', 'success' => '', 'status' => 599, 'headers' => { 'content-type' => 'text/plain', 'content-length' => 41 } };