如何向WooCommerce API发送请求

时间:2019-05-22 20:21:09

标签: c++ visual-studio curl woocommerce-rest-api

我目前正在作为实习生为一家公司构建解决方案,我需要在C ++项目中使用WooCommerce REST API功能将数据发送到网站。

到目前为止,经过2天的痛苦历程,我已经成功安装了cURL库(通过vcpkg),并使用可以在Internet上找到的许多示例对库进行了一些测试。但是就目前而言,我发现的内容似乎与WooCommerce员工在其文档中的内容不符。 例如,在this部分中,他们展示了如何使用cURL在平台上创建产品,但是我不明白如何在C ++项目中将其翻译为cURL语言。哎呀,当我在带有命令参数的命令提示符下使用该命令时,该命令甚至无法正常工作。

#include <curl/curl.h>
#include <string>

// cUrl declaration 
    CURL* curl;
    CURLcode res;
    std::string readBuffer;
    std::string URL = "http://www.example.com";

    curl_global_init(CURL_GLOBAL_ALL);
    curl = curl_easy_init();
    if (curl) {
        curl_easy_setopt(curl, CURLOPT_URL, URL);
        curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, WriteCallback);
        curl_easy_setopt(curl, CURLOPT_WRITEDATA, &readBuffer);
        res = curl_easy_perform(curl);

        // Check for errors
        if (res != CURLE_OK) {
            std::string error = "curl_easy_perform() failed: ";
            error += curl_easy_strerror(res);
            error += "\nImpossible de se connecter au site WooCommerce fourni. Veuillez verifier vos paramètres et redémarrer l'application.";
            wxMessageBox(error);
        }
        else {
            std::string success = "Connexion au domaine ";
            success += URL;
            success += " réussie.\nPour changer de domaine, veuillez consulter la page Paramètres.";
            wxMessageBox(success);
        }

    }

    // cleanup
    curl_easy_cleanup(curl);
    curl_global_cleanup();

此代码可以正常工作,我知道我必须添加公司的网站而不是示例,但是我不知道要在何处添加我的客户密钥和客户机密(基本上像WooCommerce文档上显示的示例一样) )。基本的cURL命令在我的本地命令提示符下工作正常,但是该示例无法正常工作。 我知道我的帮助请求可能是一种基本且易于解决的方法,但是我花了最后两天半的时间来解决这个问题,但现在我开始迷失了。

感谢您的帮助,我会尽力说最好的英语,所以请您提前打错任何错字,或者,如果我的帖子不符合该平台的演示标准,我们将深表歉意。在这里:D

1 个答案:

答案 0 :(得分:0)

好,对于那些路过并可能遇到与我相同的问题的人,我已经弄清楚了。您在终端和库中使用cURL进行的命令完全不同:

  • 在命令提示符下,您必须输入curl -X POST https://blablablabla
  • 在C ++库中,您必须使用参数调用curl_easy_setopt()函数以指定请求的每个组成部分:CURLOPT_URL是您的主域,CURLOPT_POSTFIELDS是您想要的数据POST,还有处理服务器响应的其他参数,例如CURLOPT_WRITEFUNCTIONCURLOPT_WRITE_DATA等。

对我来说,this example确实有用,我不知道该怎么错过:D感谢Jesper Juhl的建议,了解HTTP和HTTPS如何工作以解决这一问题至关重要。