How to send arbitrary payload with Mojo::UserAgent?

772 views Asked by At

I'm trying to use Mojo::UserAgent to access the eBay API.

One of the options is to use API requests with an XML payload, but I have had no success doing it with Mojo::UserAgent. I didn't find any options for the $ua->post method.

I also tried

my $tx = $ua->build_tx(POST => $ebay_api_url => $headers);
$tx->req->body($xml_body);
my $res = $ua->start($tx)->res->json;

with no success. The XML body is not set for the request.

What do I need to do to achieve the desired result?

I know about the possibility of using JSON requests, but that is a reserve plan.

3

There are 3 answers

0
codebard On

You likely want (2nd example in post doc):

my $tx = $ua->post($ebay_api_url => {Accept => '*/*'} => $xml_body);
3
ashraf On

Try to post your $xml_body like so:

my $tx = $ua->post($ebay_api_url => form => $xml_body);
0
Sachin Dangol On

I faced the similar issue like yours but later I realized that the problem was with the xml data. Please ensure that you do not have any trailing or leading white spaces in your $xml_body. This works:

   my $tx = $ua->post($ebay_api_url => $headers => $xml_body);

Mojolicious and Mojo::UserAgent is awesome and light.