gpt4 book ai didi

cURL 无法解析主机,但 Web 浏览器可以访问它

转载 作者:太空宇宙 更新时间:2023-11-04 08:44:03 25 4
gpt4 key购买 nike

我在我的 Mac 上用 C 编写我的服务器代码,我需要它访问 Facebook 的 Graph API,URL 为“https://graph.facebook.com/app?access_token=[insert access token here]” .我收到 CURLE_COULDNT_RESOLVE_HOST 错误,可能是因为我以前从未这样做过,而且可能做的事情完全错误。我正在设置一个 CURL* 并像这样连接:

curl = curl_easy_init();
curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, true);
curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, 2);
curl_easy_setopt(curl, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.8");
char* httpURLFormat = "https://graph.facebook.com/app?access_token=%s";
char* httpURL = emalloc(sizeof(char)*(strlen(httpURLFormat)+MAX_TOKEN_LENGTH)); //emalloc is just malloc that makes sure there is free memory
sprintf(httpURL, httpURLFormat, data->password); //data->password is the access token
curl_easy_setopt(curl, CURLOPT_URL, &httpURL);
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_data);
struct url_data response; //this struct contains int size and char* data
response.size = 0;
response.data = emalloc(4096);
curl_easy_setopt(curl, CURLOPT_WRITEDATA, &response);
CURLcode curlCode = curl_easy_perform(curl);
if (curlCode!=CURLE_OK){
printf("curl failed!!!\n"); //this ends up printing
free(response.data);
free(httpURL);
free(httpURLFormat);
return false;
}
//Yes, I free everything left over afterwards...

我在我的网络浏览器中使用我的代码使用的相同用户代理测试了它连接到的 URL,它连接没有问题。我尝试在 URL 的末尾添加一个“\n”字符,但我的代码仍然无法正常工作。

最佳答案

我发现了问题:httpURLFormat 应该是“https://graph.facebook.com:443/app?access_token=%s”。您需要在 URL 中指定端口。 CURL 显然不使用默认的 443。

关于cURL 无法解析主机,但 Web 浏览器可以访问它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22368380/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com