我正在使用libcurl,并遵循libcurl网站上的简单https GET tutorial。
当我在设置CURLOPT_URL选项时对网站URL进行硬编码时,请求有效:
curl_easy_setopt(curl, CURLOPT_URL, "https://www.google.com/");
result = curl_easy_perform(curl);
if (CURLE_OK != result)
{
fprintf(stderr, "HTTP REQ failed: %s\n", curl_easy_strerror(result));
}
但是,当我将URL放入std :: string并将字符串用作输入时,它不再起作用:
std::string url("https://www.google.com/");
curl_easy_setopt(curl, CURLOPT_URL, url);
result = curl_easy_perform(curl);
if (CURLE_OK != result)
{
fprintf(stderr, "HTTP REQ failed: %s\n", curl_easy_strerror(result));
}
然后请求返回,错误代码为3(CURLE_URL_MALFORMAT
),错误消息为:
URL使用错误/非法格式或缺少URL
当我直接对URL进行硬编码但不能使用std :: string时不能正常工作时,我在这里缺少什么?
答案 0 :(得分:2)
Curl是一个C库。它需要C字符串(const char *
)不是 C ++ std::string
对象。
您想要curl_easy_setopt(curl, CURLOPT_URL, url.c_str());