最近研究了一下在C中如何調用Java的POST請求,這里分享一下自己的心得體會。具體來講就是用C調用Java接口,并將提交的json數據以POST方式發送給服務器。
//在這里需要用到libcurl庫,可以在官網下載 #include#define URL "http://javaInterfaceUrl" //Java接口地址 //定義CURL回調函數,使CURL庫知道將服務器返回結果存儲到哪里 static size_t write_data(void* ptr, size_t size, size_t nmemb, void* stream) { size_t written = fwrite(ptr, size, nmemb, (FILE*)stream); return written; } int main() { CURL* curl; CURLcode res; FILE* fp; char* name = "Bob"; int age = 20; //拼接json字符串 char* postJson; sprintf(postJson, "{\"name\":\"%s\",\"age\":\"%d\"}", name, age); //初始化CURL,設置POST請求相關參數 curl_global_init(CURL_GLOBAL_ALL); curl = curl_easy_init(); if (curl) { //設置請求URL curl_easy_setopt(curl, CURLOPT_URL, URL); //設置POST請求 curl_easy_setopt(curl, CURLOPT_POST, 1L); //設置POST數據 curl_easy_setopt(curl, CURLOPT_POSTFIELDS, postJson); //設置頭部信息,Content-Type為application/json struct curl_slist* headers = NULL; headers = curl_slist_append(headers, "Content-Type: application/json"); curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers); //設置回調函數和輸出文件 fp = fopen("response.json", "w"); curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_data); curl_easy_setopt(curl, CURLOPT_WRITEDATA, fp); //執行CURL發送請求 res = curl_easy_perform(curl); //清除操作,釋放curl資源 curl_easy_cleanup(curl); fclose(fp); } curl_global_cleanup(); return 0; }
在以上代碼中,首先是用libcurl庫初始化CURL庫,然后設置POST請求相關參數,包括請求URL、POST數據、頭部信息等。最后通過設置回調函數和輸出文件,執行CURL發送請求。注意請求數據需要以json格式傳遞,需要設置Content-Type為application/json。
以上就是C調用Java的POST請求并提交json數據的一些簡單介紹,希望能對想要進行相關開發的開發者有所幫助。