使用CURL将JSONRPC命令发布到pyBitmessage

时间:2019-01-13 10:08:56

标签: c++11 curl xml-rpc json-rpc

我正在尝试使用pyBitmessage Curl实现将命令发布到c ++中的cpr XML-RPC服务器。像这样:

import os
import cv2 

DATADIR = "D:\Datasets\PetImages"
CATEGORIES = ['Cat', 'Dog']

for category in CATEGORIES:
    path = os.path.join(DATADIR, category)
    for img in os.listdir(path):
        img_array = cv2.imread(os.path.join(path,img), cv2.IMREAD_GRAYSCALE)

作为回报,我有 r 返回一个status_code 200,但文本结果为空,并且该错误值为:

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" } });

我在做什么错了?

1 个答案:

答案 0 :(得分:0)

我终于找到了解决方案,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>" });