【问题标题】:Requesting beginner-level guidance with using libCurl API使用 libCurl API 请求初学者级指导
【发布时间】: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 并不是我希望您已经知道的辅导/辅导网站。您认为您的问题对当前的研究有何帮助?您的代码失败的原因可能有很多。
  • @πάνταῥεῖ 抱歉,我应该知道得更多,但我已经开始依赖这里寻求快速的专家建议。有没有更适合这个问题的辅导/辅导网站?超级用户?

标签: c++ curl


【解决方案1】:

您正在尝试访问一个安全的网站,除非您使用安全套接字 (443) 协议,否则它将无法正常工作。

尝试使用 CURLOPT_USE_SSL 例如

curl_easy_setopt(curl, CURLOPT_USE_SSL, "https://confluence/pages/viewpage.action?pageId=42"); 

【讨论】:

  • 那也没用,不过没关系。我想我有一些功课要做,也许这不是 StackOverflow 最合适的问题。不过,感谢您提供帮助。
猜你喜欢
  • 2020-08-03
  • 1970-01-01
  • 2020-12-04
  • 2012-04-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多