💖 前言
libcurl是一个跨平台的网络协议库,支持http, https, ftp, gopher, telnet, dict, file, 和ldap 协议。libcurl同样支持HTTPS证书授权,HTTP POST, HTTP PUT, FTP 上传, HTTP基本表单上传,代理,cookies,和用户认证。
💖 下载
官网:https://github.com/curl/curl
软件包:curl-master.zip
如下图所示:
💖 编译
打开vs2017中的“适用于VS 2017的x64本机工具命令提示 ”工具。
切换到curl-master\projects目录,执行generate.bat,生成一个windows文件。
选择的VC14.10文件夹,用vs2017工具打开下面的curl-all.sln工程
选择对应的版本,编译对应的程序
生产的库文件在项目根目录下的build文件夹下
💖 简单使用
#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
#include<curl\curl.h>
#include <string>
#include <list>
#include <stdio.h>
using namespace std;
#pragma comment(lib, "libcurld.lib")
static size_t receive_data(void *buffer, size_t sz, size_t nmemb, void *writer)
{
string* psResponse = (string*)writer;
size_t size = sz * nmemb;
psResponse->append((char*)buffer, size);
return sz * nmemb;
}
int main()
{
string URI = "http://www.baidu.com";//网址
string resultStr; //结果数据
CURL *curl = curl_easy_init();//初始化
curl_easy_setopt(curl, CURLOPT_URL, URI.c_str());//设置URL
curl_easy_setopt(curl, CURLOPT_NOSIGNAL, 1L);//毫秒超时
curl_easy_setopt(curl, CURLOPT_TIMEOUT, 2);//函数执行过
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, receive_data);
//curl_easy_setopt(curl, CURLOPT_WRITEDATA, &resultStr);
curl_easy_setopt(curl, CURLOPT_HEADERDATA, &resultStr); //将返回的html主体数据输出到resultStr
CURLcode res = curl_easy_perform(curl);
curl_easy_cleanup(curl);
string str;
if (res != CURLE_OK)
{
strRsp = "错误!";
}
else
{
str = resultStr;
}
cout << str << endl;
system("pause");
return 0;
}
执行结果: