Json-Rpc

如何從 C 呼叫 JSON RPC API?

  • November 25, 2018

如何從 C 進行 RPC 呼叫?

我的問題與以下問題有關:“如何使用 C# 呼叫 JSON RPC API?

用於處理 JSON 的 C API 是**Jansson**。C 應用程序,例如libblkmaker使用cURL進行呼叫,使用 Jansson 解釋 cURL 獲取的 JSON。

例如基本用法(可以為比特幣 RPC 輕鬆修改),請參閱 Jansson 範例github_commits.c相關教程

這是一個如何使用cURL進行 JSON RPC 呼叫的範例,Jansson 可以處理其輸出:

#include <stdlib.h>

#include <curl/curl.h>

int main()
{
   CURL *curl = curl_easy_init();
   struct curl_slist *headers = NULL;

   if (curl) {
   const char *data =
       "{\"jsonrpc\": \"1.0\", \"id\":\"curltest\", \"method\": \"getinfo\", \"params\": [] }";

   headers = curl_slist_append(headers, "content-type: text/plain;");
   curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers);

   curl_easy_setopt(curl, CURLOPT_URL, "http://127.0.0.1:8332/");

   curl_easy_setopt(curl, CURLOPT_POSTFIELDSIZE, (long) strlen(data));
   curl_easy_setopt(curl, CURLOPT_POSTFIELDS, data);

   curl_easy_setopt(curl, CURLOPT_USERPWD,
            "bitcoinrpcUSERNAME:bitcoinrpcPASSWORD");

   curl_easy_setopt(curl, CURLOPT_USE_SSL, CURLUSESSL_TRY);

   curl_easy_perform(curl);
   }
   return 0;
}

它將像cURL範例一樣列印如下內容:

{“result”:{“balance”:0.000000000000000,“blocks”:59952,“connections”:48,“proxy”:"",“generate”:false, “genproclimit”:-1,“difficulty”:16.61907875185736} ,“錯誤”:null,“id”:“curltest”}

引用自:https://bitcoin.stackexchange.com/questions/41122