【问题标题】:How to send arbitrary payload with Mojo::UserAgent?如何使用 Mojo::UserAgent 发送任意有效负载?
【发布时间】:2015-11-23 19:39:41
【问题描述】:

我正在尝试使用 Mojo::UserAgent 访问 eBay API。

其中一个选项是使用带有 XML 有效负载的 API 请求,但我没有成功使用 Mojo::UserAgent。我没有找到$ua->post 方法的任何选项。

我也试过

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

没有成功。没有为请求设置 XML 正文。

我需要做什么才能达到预期的效果?

我知道使用 JSON 请求的可能性,但这是一个保留计划。

【问题讨论】:

  • 您终于找到解决方案了吗?同样的问题,除了在这种情况下我已经创建了 JSON

标签: perl mojolicious mojo-useragent


【解决方案1】:

尝试像这样发布您的 $xml_body:

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

【讨论】:

  • 我试过了,没有结果,'form =>'后面一定有HASH,但是我有一个带有XML的字符串
  • @NikitaTropin 所以$ua->post($ebay_api_url => $xml_body); 也不起作用?
  • 不,不是。 Malformed JSON: Expected string, array, object, number, boolean or null at line 0, offset 0 at /home/nikita/perl5/perlbrew/perls/perl-5.20.3/lib/site_perl/5.20.3/Mojo/Message.pm line 140。我在 $xml_body btw 中传递字符串。
【解决方案2】:

您可能想要(post doc 中的第二个示例):

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

【讨论】:

    【解决方案3】:

    我遇到了与您类似的问题,但后来我意识到问题出在 xml 数据上。请确保您的 $xml_body 中没有任何尾随或前导空格。这有效:

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

    MojoliciousMojo::UserAgent 很棒而且很轻。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-09
      • 1970-01-01
      • 1970-01-01
      • 2019-02-14
      • 2016-07-19
      相关资源
      最近更新 更多