如何使用 -d 选项和 -X PUT 选项为curl命令编写等效的libcurl代码?

问题描述 投票:0回答:1

我正在尝试实施 payhip 软件许可证密钥使用 API。

我已经成功发出以下curl命令;

curl https://payhip.com/api/v1/license/usage -d "product_link=MY_PRODUCT" -d "license_key=MY_KEY" -X PUT --header "payhip-api-key: API_KEY_HERE"

然后,我使用 libcurl 库在 c 中编写生产代码,如下所示;

   // curl
    CURL *curl = curl_easy_init();
    curl_easy_setopt(curl, CURLOPT_URL, "https://payhip.com/api/v1/license/usage");
    struct curl_slist *list = NULL;
    list = curl_slist_append(list, "API_KEY_HERE");
    curl_easy_setopt(curl, CURLOPT_HTTPHEADER, list);
    curl_easy_setopt(curl, CURLOPT_CUSTOMREQUEST, "PUT");
    curl_easy_setopt(curl, CURLOPT_POSTFIELDS, "product_link=MY_PRODUCT");
    curl_easy_setopt(curl, CURLOPT_POSTFIELDS, "license_key=MY_KEY");
    CURLcode res = curl_easy_perform(curl);

curl_easy_perform(curl)
返回了
0
,但响应是
HTTP/2 400 
并且响应主体说

{"code":"required_parameters","message":"Missing or empty required parameters","success":false}

如何在

curl_easy_setopt()
中写入collect put参数?

c curl libcurl
1个回答
0
投票

我找到了解决方案如下:

curl_easy_setopt(curl, CURLOPT_POSTFIELDS,"product_link=MY_PRODUCT&license_key=MY_KEY");
// curl_easy_setopt(curl, CURLOPT_POSTFIELDS, "product_link=MY_PRODUCT");
// curl_easy_setopt(curl, CURLOPT_POSTFIELDS, "license_key=MY_KEY");

这个答案对于这个问题也提供了很多信息。

© www.soinside.com 2019 - 2024. All rights reserved.