【发布时间】:2016-11-04 03:18:56
【问题描述】:
我正在尝试第一次使用 libcurl(链接到 C++ 程序),并且需要初学者级别的帮助。我对 HTTP/HTML 等也很不熟悉,所以如果我的术语与此不符,请原谅我。
使用可执行文件curl,如果我执行以下...
curl -k -u user:password https://confluence/pages/viewpage.action?pageId=42
...我得到了网页的合法内容。
我想在我的 C++ 程序中使用 libcurl 做同样的事情。
我从https://curl.haxx.se/libcurl/c/simple.html 发布的基本示例的最小修改开始:
#include <iostream>
#include <curl/curl.h>
int main(void)
{
CURL *curl;
CURLcode res;
curl = curl_easy_init();
if(curl)
{
curl_easy_setopt(curl, CURLOPT_URL, "https://confluence/pages/viewpage.action?pageId=42");
res = curl_easy_perform(curl);
if(CURLE_OK == res) { std::cout << "curl success" << std::endl; }
else { std::cout << "curl failure" << std::endl; }
curl_easy_cleanup(curl);
}
return 0;
}
此代码导致输出:
curl failure
谁能指导我如何以编程方式执行我之前使用 curl 可执行文件所做的事情?我的示例代码有一些明显的缺陷,即没有用户名和密码,所以我很感激任何正确方向的指导。谢谢。
更新
我在执行 curl 可执行文件时使用 -k 选项的原因是因为在没有 -k 的情况下运行命令导致 curl 没有返回网页内容。我刚刚尝试根据帮助文本添加-k 并观察到它有效。对不起,我缺乏理解和解释能力。如果回答者也能谈到这些主题,我将不胜感激,以帮助我理解。
更新和关闭
我有点尴尬,我没有付出更多努力就转向 StackOverflow - 为这个糟糕的问题向社区道歉。
(不安全的)解决方案,只是有点麻烦:
#include <iostream>
#include <curl/curl.h>
int main(void)
{
CURL *curl;
CURLcode res;
curl = curl_easy_init();
if(curl)
{
curl_easy_setopt(curl, CURLOPT_URL, "https://confluence/pages/viewpage.action?pageId=42");
curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 0L);
curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, 0L);
res = curl_easy_perform(curl);
if(CURLE_OK == res) { std::cout << "curl success" << std::endl; }
else { std::cout << "curl failure" << std::endl; }
curl_easy_cleanup(curl);
}
return 0;
}
【问题讨论】:
-
什么是黑客马拉松情况?
-
如“我目前正在参加黑客马拉松”。如果与帮助读者确定答案相关,我将编辑原始帖子。
-
C++ 并不是处理这类事情的最佳语言,它也不是很宽容,但如果你有决心,请查看section on passwords in the documentation。
-
@StoneThrow Stack Overflow 并不是我希望您已经知道的辅导/辅导网站。您认为您的问题对当前的研究有何帮助?您的代码失败的原因可能有很多。
-
@πάνταῥεῖ 抱歉,我应该知道得更多,但我已经开始依赖这里寻求快速的专家建议。有没有更适合这个问题的辅导/辅导网站?超级用户?