我最近一直在尝试了解有关 CURL 的更多信息,最后设法将它正确地编译和安装为我的测试项目的静态库。最终,我将继续学习发布表格等。
我已经成功地从http://www.google.se
.
连接到安全的 http 页面时https://www.google.se
,我得到一个空字符串作为页面内容。
我正在使用它来获取有关选项的信息。
我已经尝试过这个答案中的东西,但它没有用,或者我做错了。
我也试过关闭verifypeer和verifyhost(虽然我真的很想练习安全的解决方案),但也没有用。
我需要做什么才能使其工作?难道我做错了什么?
这是测试代码
#include <iostream>
#include <string>
#include <curl/curl.h>
using namespace std;
static size_t WriteCallback(void *contents, size_t size, size_t nmemb, void *userp){
((string*)userp)->append((char*)contents, size * nmemb);
return size * nmemb;
}
int main(){
CURL *curl;
CURLcode res;
string readBuffer;
curl = curl_easy_init();
if(curl){
curl_easy_setopt(curl, CURLOPT_URL, "https://www.google.se");
//curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, TRUE);
//Doesn't seem to work
curl_easy_setopt(curl, CURLOPT_CAINFO, "path\\cacert.pem");
//Neither does this
curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, FALSE);
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, WriteCallback);
curl_easy_setopt(curl, CURLOPT_WRITEDATA, &readBuffer);
res = curl_easy_perform(curl);
curl_easy_cleanup(curl);
cout<<readBuffer<<endl;
system("pause");
}
return 0;
}
更新
所以我从 curl 那里得到了错误消息Unsupported protocol
,我猜这就是 SSL 不起作用时的意思。所以我不得不用 SSL 重新编译它(这很奇怪,因为我以为我第一次这样做了)但是......
我几乎要放弃了。叹。出于某种原因,现在它
NMAKE: fatal error U1077 nasmw
在制作 SSL 时给了我错误,即使我清楚地将正确的 %PATH% 给了 nasm。我按照信中的步骤进行操作。
所以我尝试使用libcurl 类型的 curl 二进制文件,但我不知道如何在 VC++ 中正确链接它,因为我不熟悉库文件。
尝试编译测试项目时,我不断收到这些链接器错误。
1>main.obj : error LNK2019: unresolved external symbol _curl_easy_cleanup referenced in function _main
1>main.obj : error LNK2019: unresolved external symbol _curl_easy_strerror referenced in function _main
1>main.obj : error LNK2019: unresolved external symbol _curl_easy_perform referenced in function _main
1>main.obj : error LNK2019: unresolved external symbol _curl_easy_setopt referenced in function _main
1>main.obj : error LNK2019: unresolved external symbol _curl_easy_init referenced in function _main
如此沮丧......我希望我明白为什么它必须如此复杂。
我只想使用图书馆!
更新 2
好的...我设法使用 SSL 编译 curl 库并CURL_VERSION_SSL
启用报告
curl_version_info_data * vinfo = curl_version_info(CURLVERSION_NOW);
if(vinfo->features & CURL_VERSION_SSL){
cout<<"CURL: SSL enabled"<<endl;
}else{
cout<<"CURL: SSL not enabled"<<endl;
}
//Prints out "CURL: SSL enabled"
但我仍然收到相同的错误消息Unsupported protocol
。我不知道我做错了什么。