Nikita Tropin
Nikita Tropin

Reputation: 43

How to send arbitrary payload with Mojo::UserAgent?

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.

Upvotes: 2

Views: 836

Answers (3)

Sachin Dangol
Sachin Dangol

Reputation: 504

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.

Upvotes: 0

codebard
codebard

Reputation: 146

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

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

Upvotes: 0

ashraf
ashraf

Reputation: 557

Try to post your $xml_body like so:

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

Upvotes: 1

Related Questions