Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何通过get请求使用curl-in获取站点的https响应?_Curl_Libcurl - Fatal编程技术网

如何通过get请求使用curl-in获取站点的https响应?

如何通过get请求使用curl-in获取站点的https响应?,curl,libcurl,Curl,Libcurl,我有一个代码来执行它,但为什么它不起作用: #include <stdio.h> #include <stdlib.h> #include <curl/curl.h> int main() { CURL *curl; CURLcode res; curl = curl_easy_init(); if(curl) { curl_easy_setopt(curl, CURLOPT_CUSTOMREQUEST, "GET"); curl_easy_seto

我有一个代码来执行它,但为什么它不起作用:

#include <stdio.h>
#include <stdlib.h>
#include <curl/curl.h>

int main()
{
CURL *curl;
CURLcode res;
curl = curl_easy_init();
if(curl) {
  curl_easy_setopt(curl, CURLOPT_CUSTOMREQUEST, "GET");
  curl_easy_setopt(curl, CURLOPT_URL, "https://curl.haxx.se/libcurl/c/url2file.html");
  curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1L);
  curl_easy_setopt(curl, CURLOPT_DEFAULT_PROTOCOL, "https");
  struct curl_slist *headers = NULL;
  curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers);
  curl_easy_setopt(curl, CURLOPT_WRITEDATA, stdout);
  res = curl_easy_perform(curl);
      if(res != CURLE_OK)
      fprintf(stderr, "curl_easy_perform() failed: %s\n",
              curl_easy_strerror(res));
}
curl_easy_cleanup(curl);
return 0;
}
#包括
#包括
#包括
int main()
{
卷曲*卷曲;
卷曲编码;
curl=curl_easy_init();
if(curl){
curl_easy_setopt(curl,CURLOPT_CUSTOMREQUEST,“GET”);
curl\u easy\u setopt(curl,CURLOPT\u URL,“https://curl.haxx.se/libcurl/c/url2file.html");
卷曲位置(卷曲,卷曲位置,1L);
curl_easy_setopt(curl,CURLOPT_DEFAULT_PROTOCOL,“https”);
struct curl_slist*headers=NULL;
curl_easy_setopt(curl,CURLOPT_HTTPHEADER,headers);
curl_easy_setopt(curl,CURLOPT_WRITEDATA,stdout);
res=旋度(curl)\u容易执行(curl);
如果(res!=卷曲(OK)
fprintf(stderr,“curl\u easy\u perform()失败:%s\n”,
卷曲(容易的);
}
旋度\轻松\清洁(旋度);
返回0;
}
给出输出:

curl\u easy\u perform()失败:SSL对等证书或SSH远程密钥不正常

但是当我在cmd中执行'curl'时,它成功地给出了响应

我从邮递员那里得到了这段代码,只是编辑了一下。 我的目的是打印网站对stdout的响应

“Get”请求在Postman上运行良好,但为什么在c中的libcurl上不能运行呢。 我怎样才能解决这个问题?
我是libcurl的新手,找不到足够好的信息,你有什么建议

我想那是错误号60吧?(记录在案)

这意味着libcurl使用的CA证书无法从curl.haxx.se验证服务器证书-如果启用
CURLOPT\u VERBOSE
,您可以看到它使用的CA证书路径。您可能必须将其指向特定路径

您的代码还使用了许多可以删除的多余选项:

curl_easy_setopt(curl, CURLOPT_CUSTOMREQUEST, "GET");
这是默认值

curl_easy_setopt(curl, CURLOPT_DEFAULT_PROTOCOL, "https");
只有当您在没有方案的情况下指定“URL”时才有意思,而您没有

struct curl_slist *headers = NULL;
curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers);
这没有效果

curl_easy_setopt(curl, CURLOPT_WRITEDATA, stdout);
这是默认值