【问题标题】:Perl JSON::RPC::Client Not a HASH reference ErrorPerl JSON::RPC::Client 不是 HASH 引用错误
【发布时间】:2012-11-22 19:56:57
【问题描述】:

当我调用远程 echo 程序时,我的调用会到达 rpc 服务器,该服务器是用 python 编写的,带有 txjsonrpc 模块。但是这个脚本说:

在 /usr/local/lib/perl/5.14.2/ 的字符偏移量 0 处(在“读取失败:在 /us...”之前)处的错误 JSON 字符串,既不是数组、对象、数字、字符串也不是原子Moose/Meta/Method/Delegation.pm 第 110 行

有什么想法吗?代码在这里:

use LWP::UserAgent;
use JSON::RPC::LWP;
use Net::SSL ();
use JSON::RPC::Client;

$ENV{HTTPS_DEBUG} = 1;
# CA cert peer verification
$ENV{HTTPS_CA_FILE}   = 'ca_file';
$ENV{HTTPS_CA_DIR}    = 'ca_dir';

# Client PKCS12 cert support
$ENV{HTTPS_PKCS12_FILE}     = 'pkcs12 cert';
$ENV{HTTPS_PKCS12_PASSWORD} = 'password';

my $ua = eval { LWP::UserAgent->new() }
        or die "Could not make user-agent! $@";
$ua->ssl_opts( verify_hostname => 0);

print "JSON RPC CONNECTION\n";
my $rpc = JSON::RPC::Client->new(
  ua => $ua,
  version => '2.0'
);
my $result = $rpc->call( 'https://...', {method=>'echo', params=>['param']});
print $result->result, "\n";

【问题讨论】:

    标签: perl ssl


    【解决方案1】:

    您使用的是什么版本的 JSON::RPC::Client?如果它是最新的,则该错误正在发生,因为服务器返回的不是 JSON 对象。

    【讨论】:

    • 我使用最新版本的 JSON::RPC::Client。它适用于 JSON::RPC::LWP 而不是 JSON::RPC::Client。有什么区别?
    • 我不知道。可能是 JSON::RPC::Client 中的一个错误 - 我在代码中至少看到一个(无害的)一个。您可以在 Client.pm ( $content->{error} ? ... ) 的第 193 行之前添加 use Data::Dumper; print Dumper $obj->content; 并查看它得到了什么。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-09-08
    • 2012-01-19
    • 1970-01-01
    • 2011-07-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-21
    相关资源
    最近更新 更多