在Windows上使用libcurl发起HTTP请求
2024-08-29 19:51:49
curl下载地址https://curl.haxx.se/download.html
当前最新版本为7.61.0
将下载的curl-7.61.0.zip解压,得到curl-7.61.0
在目录curl-7.61.0\winbuild中打开cmd
找到vcvars32.bat的位置(它在VS的安装目录中),在刚刚打开的cmd中运行此bat(目的是设置临时的环境变量,使当前的cmd可以运行nmake)
在cmd中运行nmake /f Makefile.vc mode=dll VC=<VC版本>,例如nmake /f Makefile.vc mode=dll VC=14
构建结束后,curl-7.61.0\builds\libcurl-vc15-x86-release-dll-ipv6-sspi-winssl中的lib\libcurl.lib、bin\libcurl.dll和include\curl\*.h便是我们所需要的库和头文件
GET示例
#include <stdio.h>
#include <curl/curl.h>
#pragma comment(lib, "libcurl.lib")
size_t writeFunction(void *data, size_t sizeOfEachObject, size_t numberOfObjects);
int main()
{
curl_global_init(CURL_GLOBAL_ALL);
CURL *curl = curl_easy_init();
if (curl)
{
const char *url = "https://api.eyekey.com/face/Check/checking?app_id=f89ae61fd63d4a63842277e9144a6bd2&app_key=af1cd33549c54b27ae24aeb041865da2&url=http%3A%2F%2Fpicview01.baomihua.com%2Fphotos%2F20120713%2Fm_14_634778197959062500_40614445.jpg";
curl_easy_setopt(curl, CURLOPT_URL, url);
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, writeFunction);
CURLcode curlCode = curl_easy_perform(curl);
if (CURLE_OK != curlCode)
fprintf(stderr, "curl_easy_perform() failed: %s\n", curl_easy_strerror(curlCode));
curl_easy_cleanup(curl);
}
else
printf("Something went wrong\n");
curl_global_cleanup();
system("pause");
return ;
}
size_t writeFunction(void *data, size_t sizeOfEachObject, size_t numberOfObjects)
{
char *dataPtr = (char *)data;
dataPtr[numberOfObjects] = '\0';
printf("%s", dataPtr);
return sizeOfEachObject * numberOfObjects;
}
POST示例
#include <stdio.h>
#include <curl/curl.h>
#pragma comment(lib, "libcurl.lib")
int main()
{
curl_global_init(CURL_GLOBAL_ALL);
CURL *curl = curl_easy_init();
if (curl)
{
const char *url = "https://api.eyekey.com/face/Check/checking";
curl_easy_setopt(curl, CURLOPT_URL, url);
curl_easy_setopt(curl, CURLOPT_POSTFIELDS, "app_id=f89ae61fd63d4a63842277e9144a6bd2&app_key=af1cd33549c54b27ae24aeb041865da2&url=https://gss1.bdstatic.com/9vo3dSag_xI4khGkpoWK1HF6hhy/baike/w%3D268%3Bg%3D0/sign=18bb0cc2dd1373f0f53f68999c342cc6/caef76094b36acafe725024570d98d1000e99c46.jpg");
CURLcode curlCode = curl_easy_perform(curl);
if (CURLE_OK != curlCode)
fprintf(stderr, "curl_easy_perform() failed: %s\n", curl_easy_strerror(curlCode));
curl_easy_cleanup(curl);
}
curl_global_cleanup();
system("pause");
return ;
}
参考链接
最新文章
- C#使用资源文件的方法
- 利用FileStream实现多媒体文件复制
- Struts2部署在Websphere上的问题
- 集群(cluster)原理(转)
- yum 搭建lnmp环境详细步骤
- 如何从Eclipse导入github上的项目源码
- IE7,8,9兼容性处理
- echarts之词云随机颜色的配置
- Git相关操作二
- web实现数据交互的几种常见方式
- 在java程序中实现发送邮件的功能
- 712. Minimum ASCII Delete Sum for Two Strings
- H5 marquee标签
- window.location.href 页面不跳转解决
- webpack-loader是怎样炼成的
- 从字节码层面看“HelloWorld”
- 使用navicat 连接mysql出现1251错误
- spark on yarn任务提交缓慢解决
- leetcode-844 Backspace String Compare
- 对linux内核中jiffies+Hz表示一秒钟的理解
热门文章
- 有关git的配置
- iOS知识列表
- BZOJ 4568 [Scoi2016]幸运数字 ——线性基 倍增
- Classloader中loadClass()方法和Class.forName()区别
- HDU [P3949] XOR
- Apache Sqoop - Overview Apache Sqoop 概述
- poj1426 - Find The Multiple [bfs 记录路径]
- Controller配置汇总
- Mac OS X 下安装python的MySQLdb模块
- [bzoj1345][Baltic2007]序列问题_单调栈