【问题标题】:LWP response JSON values are emptyLWP 响应 JSON 值为空
【发布时间】:2019-11-13 14:12:05
【问题描述】:

我正在尝试使用 LWP 和 CURL(unix 命令)运行 GET 方法以获取 JSON 格式的内容,我仅在 CURL 命令中看到完整的内容,但 LWP 响应显示有效的 JSON 但具有空值.

请求

轻量化

   my $ua= LWP::UserAgent->new();
   my $host='https://sample.com/iersiefhsiof';
   $ua->default_header('Content-Type' => 'application/json');
   $ua->default_header('Authorization' => 'XXXXXXXXXXXXXXxx');
   $ua->default_header('Accept' => 'application/json');
   my $response=$ua->get($host);
   $res=$response->content();
   print ($res);

卷曲

curl  -H "Accept: application/json" -H "Content-Type: application/json" -H 'Authorization:XXXXXXXXXXXXXXX' -ikL 'https://sample.com/iersiefhsiof'

回复

轻量化

{
    "id":"",
    "state":"",
    "category":"",
    "severity":"",}'`

卷曲

  `{"id":"iersiefhsiof","state":"open","category":"App","severity":"minor",}'`

请帮助我了解我在 LWP 请求中缺少什么以获得完整的响应内容。

【问题讨论】:

  • 我忘了提,我还发送了一些自定义标头 'x-inf-route-key'=>'GetID',请告诉我 LWP 是否有不同的发送方式自定义标题。

标签: json curl lwp-useragent


【解决方案1】:

现在已经修复了!

根据 Header.pm ,我应该使用“:”作为自定义标题字段名称,如果我不使用它,那么它将第一个字符转换为大写,因此标题会丢失。

    unless ($field =~ /^:/) {
    $field =~ tr/_/-/ if $TRANSLATE_UNDERSCORE;
    my $old = $field;
    $field = lc $field;
    unless($standard_case{$field} || $self->{'::std_case'}{$field}) {
        # generate a %std_case entry for this field
        **$old =~ s/\b(\w)/\u$1/g;**
        $self->{'::std_case'}{$field} = $old;
    }
    }

参考:https://github.com/libwww-perl/HTTP-Message/blob/master/lib/HTTP/Headers.pm

':x-inf-route-key'=>'GetID'

谢谢:)

【讨论】:

    猜你喜欢
    • 2021-12-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多