在Windows上使用libcurl发起HTTP请求
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 ;
}
参考链接
在Windows上使用libcurl发起HTTP请求的更多相关文章
- windows上apache是线程处理请求,linux上apache是进程处理请求
windows上apache是线程处理请求,linux上apache是进程处理请求
- libcurl发起post请求时间延迟问题。except为空即可
最近在做团购酒店APP分享到qzone功能,使用libcurl访问qzone的分享cgi接口,酒店分享信息以POST方式传输,在测试的时候发现分享接口平均有2s的延迟,这延迟也太大了吧,于是乎问了空间 ...
- .net 模拟发起HTTP请求(用于上传文件)
用C#在服务端发起http请求,附上代码一 /// <summary> /// 文件帮助类 /// </summary> public class FileHelper { / ...
- 使用 HttpRequester 更方便的发起 HTTP 请求
使用 HttpRequester 更方便的发起 HTTP 请求 Intro 一直感觉 .net 里面(这里主要说的是 .net framework 下)发送 HTTP 请求的方式用着不是特别好用,而且 ...
- NET MVC全局异常处理(一) 【转载】网站遭遇DDoS攻击怎么办 使用 HttpRequester 更方便的发起 HTTP 请求 C#文件流。 Url的Base64编码以及解码 C#计算字符串长度,汉字算两个字符 2019周笔记(2.18-2.23) Mysql语句中当前时间不能直接使用C#中的Date.Now传输 Mysql中Count函数的正确使用
NET MVC全局异常处理(一) 目录 .NET MVC全局异常处理 IIS配置 静态错误页配置 .NET错误页配置 程序设置 全局异常配置 .NET MVC全局异常处理 一直知道有.NET有相关 ...
- 在Windows上安装Elasticsearch 5.0
在windows上安装Elasticsearch Elasticsearch可以使用.zip软件包安装在Windows上. elasticsearch-service.bat命令,它将设置Elasti ...
- 在 Windows 上安装Rabbit MQ 指南
rabbitMQ是一个在AMQP协议标准基础上完整的,可服用的企业消息系统.他遵循Mozilla Public License开源协议.采用 Erlang 实现的工业级的消息队列(MQ)服务器. Ra ...
- 关于java发起http请求
我们到底能走多远系列(41) 扯淡: 好久没总结点东西了,技术上没什么总结,感觉做事空牢牢的.最近也比较疲惫. 分享些东西,造福全人类~ 主题: 1,java模拟发起一个http请求 使用HttpUR ...
- (转)在 Windows 上安装Rabbit MQ 指南
rabbitMQ是一个在AMQP协议标准基础上完整的,可服用的企业消息系统.他遵循Mozilla Public License开源协议.采用 Erlang 实现的工业级的消息队列(MQ)服务器. Ra ...
随机推荐
- lua学习随笔
1.1 Chunks 1.2 全局变量 访问一个没有初始化的全局变量也不会出错,只不过的到的结果是nil 如果想删除一个全局变量,只需要将变量赋值为nil 1.3 词法约定 标识符 保留字不能作为 ...
- mark一下。hadoop分布式系统搭建
用于测试,我用4台虚拟机搭建成了hadoop结构 我用了两个台式机.一个xp系统,一个win7系统.每台电脑装两个虚拟机,要不然内存就满了. 1.安装虚拟机环境 Vmware,收费产品,占内存较大. ...
- *AtCoder Regular Contest 096E - Everything on It
$n \leq 3000$个酱,丢进拉面里,需要没两碗面的酱一样,并且每个酱至少出现两次,面的数量随意.问方案数.对一给定质数取模. 没法dp就大力容斥辣.. $Ans=\sum_{i=0}^n (- ...
- Yii2之创建定时任务
yii开发的项目需要使用定时任务其实也可以使用一些单独的脚本文件来完成,但若是定时任务代码中需要使用到项目中的一些类,特别是需要使用应用对象Yii::$app的时候,单独的脚本想要完成就比较麻烦了.这 ...
- Oracle的memory_max_target和memory_target修改和ORA-00845: MEMORY_TARGET not supported on this system错误解决
https://blog.csdn.net/sunny05296/article/details/56495599
- P1717 钓鱼 洛谷
https://www.luogu.org/problem/show?pid=1717 题目描述 话说发源于小朋友精心设计的游戏被电脑组的童鞋们藐杀之后非常不爽,为了表示安慰和鼓励,VIP999决定请 ...
- Info.plist 的字段解释
bundle字段 这些字段名都是XML中的名称,在xcode的属性编辑器中,名字并不相同 bundle目录中的属性列表详细描述了有关该bundle的信息.Finder和一些系统API在一些情况下会使用 ...
- android EditText监听和长度监测事件
<?xml version="1.0" encoding="utf-8"?> <!-- 定义基础的LinearLayout布局 --> ...
- js上传文件研究
https://github.com/shengulong/javascript-file-upload
- python的分布式队列神器 Celery
pip search kafka可以搜索到很多kafka的python插件,选择一个大家用的比较多的 celery结合kafka使用 使用kafka扩展python logging集中式日志收集 re ...