Отправка команды JSONRPC в pyBitmessage с использованием CURL - PullRequest
0 голосов
/ 13 января 2019

Я пытаюсь отправить команду на сервер pyBitmessage XML-RPC на c ++ с cpr реализацией Curl. Как это:

auto r = cpr::Post(cpr::Url{ "http://xxx:yyy@localhost:8442/" },
    cpr::Body{ "{\"jsonrpc\":\"1.0\",\"id\":1,\"method\":\"add\",\"params\":{\"a\":2,\"b\":3}}" },
    cpr::Header{ { "Content-Type", "application/json" } });

В ответ я получаю r , возвращающий код состояния 200, но с пустым текстовым результатом и значением этой ошибки:

{code=INTERNAL_ERROR (4) message="transfer closed with 349 bytes remaining to read" }

что я делаю не так?

1 Ответ

0 голосов
/ 13 января 2019

Я наконец нашел решение, pyBitmessage - это обычный XML-RPC, а не JSONish-версия RPC, подобная реализованной в Bitcoind. Итак, правильный метод вызова в чистом XML:

auto r = cpr::Post(cpr::Url{ "http://xxx:yyy@127.0.0.1:8442/" },
cpr::Body{ "<methodCall><methodName>add</methodName><params><param><value><int>123</int></value></param><param><value><int>456</int></value></param></params></methodCall>" });
...