c++11 - 使用 CURL 将 JSONRPC 命令发布到 pyBitmessage
问题描述
我正在尝试使用cpr Curl 实现将命令发布到 c++ 中的pyBitmessage XML-RPC 服务器。像这样:
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返回一个 status_code 200 但带有空文本结果和此错误值:
{code=INTERNAL_ERROR (4) message="transfer closed with 349 bytes remaining to read" }
我究竟做错了什么?
解决方案
我终于找到了解决方案,pyBitmessage 是一个常规的 XML-RPC,而不是像 Bitcoind 实现的 JSONish 版本的 RPC。所以正确的调用方法是纯 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>" });
推荐阅读
- node.js - 基于目标客户端与服务器代码的不同构建
- python - 配置两个远程系统之间的路径映射以使断点在 PyDev 中工作
- ruby-on-rails - Rails ActionView::Template::Error undefined method `count' 解析器
- javascript - Javascript用不同的参数链接相同的动画函数
- google-app-engine - Google Cloud App Engine - 编辑 1 个文件
- android - Firestore 适配器获取所有用户文档,但不是当前用户文档显示在 RecyclerView
- javascript - 如何访问一个内部的所有表单
- azure-sql-database - Azure SQL Server, is it possible to disable server admin (after creation)?
- firebase - Firestore 中的安全规则数量是否有限制或最大值?
- python - 与新的观察结果连接——DataFrame