在C語言中,可以通過訪問URL獲取JSON數據庫,實現與遠程服務器的數據傳輸。
#include <stdio.h> #include <stdlib.h> #include <curl/curl.h> static size_t writeCallback(void* buf, size_t size, size_t nmemb, void* userdata) { // 用于接收響應數據,即JSON字符串 char** responsePtr = (char**)userdata; size_t bufferLen = size * nmemb; if (*responsePtr == NULL) { *responsePtr = (char*)malloc(bufferLen + 1); } else { *responsePtr = (char*)realloc(*responsePtr, bufferLen + 1); } strncpy(*responsePtr, (char*)buf, bufferLen); (*responsePtr)[bufferLen] = '\0'; return bufferLen; } int main() { CURL* curl; CURLcode res; char* response = NULL; curl_global_init(CURL_GLOBAL_DEFAULT); curl = curl_easy_init(); if (curl) { // 設置請求的URL curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/myjson"); // 設置請求超時時間 curl_easy_setopt(curl, CURLOPT_TIMEOUT, 5L); // 設置響應數據回調函數 curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, writeCallback); // 設置響應數據的指針 curl_easy_setopt(curl, CURLOPT_WRITEDATA, (void*)&response); // 發送請求 res = curl_easy_perform(curl); if (res != CURLE_OK) { printf("curl_easy_perform() failed: %s\n", curl_easy_strerror(res)); } else { printf("%s\n", response); } // 釋放響應數據的內存 free(response); } // 釋放CURL資源 curl_easy_cleanup(curl); // 全局清理函數 curl_global_cleanup(); return 0; }
以上是一個訪問URL獲取JSON字符串的示例代碼。具體來說,首先需要使用CURL庫來完成請求操作,這可以通過CURL的初始化和設置選項完成。然后,我們需要實現一個響應數據的回調函數,用于接收并處理服務器返回的JSON字符串。在響應數據回調函數中,我們可以使用malloc或realloc函數來獲取與服務器響應字符串相同長度的內存空間,并將其存儲到response指針中。最后,通過調用curl_easy_perform函數來發送請求并獲取響應數據,如果響應成功,則在控制臺上打印該JSON字符串。
上一篇c 訪問服務獲取json
下一篇vue2 tsx