Я пытаюсь отправить команду на сервер pyBitmessage XML-RPC на С ++ с реализацией 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" } });
Взамен у меня есть
{code=INTERNAL_ERROR (4) message = "transfer closed with 349 bytes remaining to read" }
Что я делаю неправильно?





Я наконец нашел решение, pyBitmessage - это обычный XML-RPC, а не JSONish версия RPC, как это реализовано с помощью Bitcoind. Итак, правильный метод вызова - в чистом XML:
auto r = cpr::Post(cpr::Url{ "http://xxx:[email protected]:8442/" },
cpr::Body{ "<methodCall><methodName>add</methodName><params><param><value><int>123</int></value></param><param><value><int>456</int></value></param></params></methodCall>" });