Эта ошибка означает, что ваш JSON-RPC-сервер на самом деле не один, поскольку он не удовлетворяет требованию 7.3 .Ошибка срабатывает, когда JSON::RPC::Client
предполагает, что документ, возвращаемый службой JSON-RPC, правильно сформирован (т. Е. Объект JSON), и это допущение оказывается ошибочным.Сообщение об ошибке автору JSON::RPC::Client
было бы подходящим способом запросить лучший обмен сообщениями об ошибках.
Я бы атаковал такого рода проблемы, узнав, что сервер возвращал, что вызывало JSON::RPC::Client
удушение,К сожалению, JRC
не может обеспечить адекватные точки подключения для выяснения этого, поэтому вам придется немного хитрить.
Мне не нравится редактировать внешние библиотеки, поэтому я рекомендую расширять ипереопределить подход к инструментированию трафика с сервером JSON-RPC.Примерно так (в check_ac.pl
):
use Data::Dumper qw();
package JSON::RPC::InstrumentedClient;
use base 'JSON::RPC::Client';
# This would be better done with Module::Install, but I'm limiting dependencies today.
sub _get {
my ($self, @args) = @_;
return $self->_dump_response($self->SUPER::_get(@args));
}
sub _post {
my ($self, @args) = @_;
return $self->_dump_response($self->SUPER::_post(@args));
}
sub _dump_response {
my ($self, $response) = @_;
warn Data::Dumper::Dump([$response->decoded_content], [qw(content)]);
return $response;
}
package main;
my $client = JSON::RPC::InstrumentedClient->new();
my $url = 'http://localhost:19000';
... # rest of check_ac.pl
Это оборачивает вызовы к _get
и _post
, которые JSON::RPC::Client
выполняет внутри, таким образом, чтобы вы могли проверить, что веб-серверфактически сказал в ответ на запрос, который мы сделали.Приведенный выше код выводит текстовое содержимое страницы;это может быть неправильно в вашем случае и взорвется, если возникнет ошибка.Это только средство отладки, помогающее выяснить со стороны клиентского кода, что не так с сервером.
Думаю, на данный момент достаточно предостережений.Удачи.