curl:使用c ++中的post方法提交表单数据

时间:2014-05-06 09:28:39

标签: magento visual-c++ oauth libcurl

我想使用libcurl使用post方法将简单的表单数据从c ++提交到服务器。该怎么做??

我的数据如下:

Url : http://localhost/myproject/myadmin/oauth_authorize/index/

发布数据如下:

admin_parameters=form_key=slkjdkfjd&login[username]=sdfd&login[password]=ksjdkkfd&oauth_token=kdsjkfjdkfjd

我的CURL代码:

        CURL *curl;
        CURLcode res;

        curl=curl_easy_init();
        if(curl)
        {
            curl_easy_setopt(curl,CURLOPT_URL,"http://localhost/myproject/myadmin/oauth_authorize/index/");

            curl_easy_setopt(curl,CURLOPT_POST,true);   
            curl_easy_setopt(curl,CURLOPT_POSTFIELDS,admin_parameters);

            res = curl_easy_perform(curl);
            if(res != CURLE_OK)
            {
                strError.Format("Error: Magento Admin Login Fails.: %s", res);
            }
            curl_easy_cleanup(curl);
        }

如何提交此数据并从服务器获取响应。请帮帮我。 谢谢高级。

1 个答案:

答案 0 :(得分:2)

我遇到了同样的问题,这就是解决方案。

1st:您需要确保输入了确切的参数及其语法。您可以使用Chrome的“检查元素”来完成,选择“网络”标签并向您的网络服务发出请求。

  1. 从下图中,您应该使用“请求网址”作为curl的网址。
  2. 您的参数应与“表单数据”中的参数完全相同。
  3. 第二:默认情况下,curl不会对您的帖子数据进行任何编码。所以你必须自己做。

    enter image description here

    代码:

    void request()
    {
        string formData = "Your form data in plain text";
    
        // Encode form data
        string formDataEncoded = static_cast<string>(formData);
    
        CURL *curl;
        CURLcode res;
    
        curl_global_init(CURL_GLOBAL_ALL);
    
        curl = curl_easy_init();
    
        if(curl)
        {
            curl_easy_setopt(curl, CURLOPT_URL, "Request URL");
            curl_easy_setopt(curl, CURLOPT_POST, 1);
            curl_easy_setopt(curl, CURLOPT_POSTFIELDS, formDataEncoded.c_str());
            res = curl_easy_perform(curl);
    
            if(res != CURLE_OK)
            {
                cout << stderr << "curl_easy_perform() failed: " << curl_easy_strerror(res) << endl;
            }
    
            curl_easy_cleanup(curl);
        }
    
        curl_global_cleanup();
    }