我想使用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);
}
如何提交此数据并从服务器获取响应。请帮帮我。 谢谢高级。
答案 0 :(得分:2)
我遇到了同样的问题,这就是解决方案。
1st:您需要确保输入了确切的参数及其语法。您可以使用Chrome的“检查元素”来完成,选择“网络”标签并向您的网络服务发出请求。
curl
的网址。第二:默认情况下,curl
不会对您的帖子数据进行任何编码。所以你必须自己做。
代码:
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();
}