无法识别CURLOPT_POSTFIELD值

时间:2016-06-20 11:36:37

标签: c++ string curl

  

感谢@Mat的评论,我得到了解决方案:

     

我替换了

     

curl_easy_setopt(curl, CURLOPT_POSTFIELDS, cQuery);

     

     

curl_easy_setopt(curl, CURLOPT_POSTFIELDSIZE, strlen(cQuery));

     

curl_easy_setopt(curl, CURLOPT_COPYPOSTFIELDS, cQuery);

我目前正在努力解决一个或多或少会让我疯狂的奇怪问题。

我正在使用以下代码创建我想用于CURLOPT_POSTFIELDS以执行CURL请求的值。

string query;
map<string, string> parameters = resource->GetParameters();
typedef std::map<std::string, std::string>::iterator it_type;
int i = 0;
for (it_type iterator = parameters.begin(); iterator != parameters.end(); iterator++, i++) {
    if (i > 0)
        query.append("&");
    query = query.append(iterator->first).append("=").append(iterator->second);
}
curl_easy_setopt(curl, CURLOPT_POST, true);
const char *cQuery = query.c_str();
cout << cQuery << endl;
cout << "grant_type=client_credentials&scope=default" << endl;
curl_easy_setopt(curl, CURLOPT_POSTFIELDS, cQuery);

cout的输出均为:

grant_type=client_credentials&scope=default
grant_type=client_credentials&scope=default

如果我使用cQuery变量作为值,服务器正在响应我没有指定授权类型。

如果我要替换

curl_easy_setopt(curl, CURLOPT_POSTFIELDS, cQuery);

curl_easy_setopt(curl, CURLOPT_POSTFIELDS, "grant_type=client_credentials&scope=default");

它工作正常。

我的背景是更多Java和C#相关,所以我假设我错过了一些c ++基础知识。我也是stackoverflow的新手,所以如果我正在做某事。错了,请告诉我。

我期待着你的回答。谢谢你的帮助。

1 个答案:

答案 0 :(得分:0)

感谢@Mat的评论,我得到了解决方案:

我替换了

curl_easy_setopt(curl, CURLOPT_POSTFIELDS, cQuery);

curl_easy_setopt(curl, CURLOPT_POSTFIELDSIZE, strlen(cQuery));

curl_easy_setopt(curl, CURLOPT_COPYPOSTFIELDS, cQuery);