首页 > 解决方案 > C: 使用 HTTP 请求发布 json 数据

问题描述

我正在尝试使用 C 通过 URL 将 json 数据发布到服务器。我已经下载了 curl.h 包https://curl.se/download.html并将其包含在代码中。这就是我所做的:

#include <stdio.h>
#include "F:\Desktop\myfolder\curl\include\curl\curl.h"

int main (int argc, char *argv[]) {
    CURL *curl;
    CURLcode res;

    curl_global_init(CURL_GLOBAL_ALL);
    curl = curl_easy_init();
    if (curl == NULL) {
        return 128;
    }

    char* jsonObj = "{ \"name\" : \"ABC\" , \"age\" : \"22\" }";

    struct curl_slist *headers = NULL;
    curl_slist_append(headers, "Accept: application/json");
    curl_slist_append(headers, "Content-Type: application/json");
    curl_slist_append(headers, "charset: utf-8");

    curl_easy_setopt(curl, CURLOPT_URL, "http://ip-address/myapi/");

    curl_easy_setopt(curl, CURLOPT_CUSTOMREQUEST, "POST");
    curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers);
    curl_easy_setopt(curl, CURLOPT_POSTFIELDS, jsonObj);
    curl_easy_setopt(curl, CURLOPT_USERAGENT, "libcrp/0.1");

    res = curl_easy_perform(curl);

    curl_easy_cleanup(curl);
    curl_global_cleanup();
    return res;
}

不幸的是,我收到以下错误:

C:\Users\Admin\AppData\Local\Temp\ccoDiLJ0.o:gpsapi.c:(.text+0xee): undefined reference to `__imp_curl_global_init'
C:\Users\Admin\AppData\Local\Temp\ccoDiLJ0.o:gpsapi.c:(.text+0xf7): undefined reference to `__imp_curl_easy_init'
C:\Users\Admin\AppData\Local\Temp\ccoDiLJ0.o:gpsapi.c:(.text+0x136): undefined reference to `__imp_curl_slist_append'
C:\Users\Admin\AppData\Local\Temp\ccoDiLJ0.o:gpsapi.c:(.text+0x14d): undefined reference to `__imp_curl_slist_append'
C:\Users\Admin\AppData\Local\Temp\ccoDiLJ0.o:gpsapi.c:(.text+0x164): undefined reference to `__imp_curl_slist_append'
C:\Users\Admin\AppData\Local\Temp\ccoDiLJ0.o:gpsapi.c:(.text+0x185): undefined reference to `__imp_curl_easy_setopt'
C:\Users\Admin\AppData\Local\Temp\ccoDiLJ0.o:gpsapi.c:(.text+0x1a6): undefined reference to `__imp_curl_easy_setopt'
C:\Users\Admin\AppData\Local\Temp\ccoDiLJ0.o:gpsapi.c:(.text+0x1c7): undefined reference to `__imp_curl_easy_setopt'
C:\Users\Admin\AppData\Local\Temp\ccoDiLJ0.o:gpsapi.c:(.text+0x1e8): undefined reference to `__imp_curl_easy_setopt'
C:\Users\Admin\AppData\Local\Temp\ccoDiLJ0.o:gpsapi.c:(.text+0x209): undefined reference to `__imp_curl_easy_setopt'
C:\Users\Admin\AppData\Local\Temp\ccoDiLJ0.o:gpsapi.c:(.text+0x219): undefined reference to `__imp_curl_easy_perform'
C:\Users\Admin\AppData\Local\Temp\ccoDiLJ0.o:gpsapi.c:(.text+0x22c): undefined reference to `__imp_curl_easy_cleanup'
C:\Users\Admin\AppData\Local\Temp\ccoDiLJ0.o:gpsapi.c:(.text+0x235): undefined reference to `__imp_curl_global_cleanup'
collect2.exe: error: ld returned 1 exit status

这是正确的方法还是我错过了什么?我对在 C 中发送请求很陌生,因此感谢您提供任何帮助。谢谢!

标签: cjsonhttpcurlpost

解决方案


推荐阅读