JSON-RPC是一種輕量級的RPC協議,它基于json格式數據傳遞,被廣泛應用于分布式應用中。C語言作為一種高效、低級別的編程語言,也可以直接訪問JSON-RPC服務。
#include#include // 定義json-rpc請求數據 char *request = "{\"jsonrpc\":\"2.0\",\"method\":\"add\",\"params\":[1,2],\"id\":1}"; // 定義curl回調函數 size_t write_callback(char *ptr, size_t size, size_t nmemb, void *userdata) { printf("%.*s", size * nmemb, ptr); return size * nmemb; } int main(void) { CURL *curl; CURLcode res; char *header = "Content-Type: application/json"; // 初始化curl curl_global_init(CURL_GLOBAL_ALL); curl = curl_easy_init(); if(curl) { // 設置curl選項 curl_easy_setopt(curl, CURLOPT_POST, 1L); curl_easy_setopt(curl, CURLOPT_POSTFIELDS, request); curl_easy_setopt(curl, CURLOPT_HTTPHEADER, header); curl_easy_setopt(curl, CURLOPT_URL, "http://localhost:8080/rpc"); // 設置curl回調函數 curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_callback); // 執行請求 res = curl_easy_perform(curl); // 檢查請求結果 if(res != CURLE_OK) fprintf(stderr, "curl_easy_perform() failed: %s\n", curl_easy_strerror(res)); // 清理curl curl_easy_cleanup(curl); } // 清理curl全局狀態 curl_global_cleanup(); return 0; }
以上代碼使用了libcurl庫來訪問JSON-RPC服務,并使用C語言的函數回調來處理請求響應。在實際使用中,還需要根據JSON-RPC協議對請求參數和響應數據進行解析,以便進行適當的處理。
上一篇c 訪問json