使用libcurl提交POST请求

实现c++对Libcurl的post调用一些爬坑记录 摘要 阅读详情

转自:http://blog.youkuaiyun.com/zengraoli/article/details/11522563

最近在学习libcurl,并利用它提交POST请求,可是返回的响应总是无从验证该次POST请求是否成功提交了。

1. 先看下根据firebug提交的一次成功的请求,这里以login我喜欢上的xiami为例,嘻嘻~

 

1.1 本次POST请求的HTTP交互

 

1.2 POST

 

1.3 经server端redirect的GET

 

2. OK,接下来看下使用libcurl向xiami发送POST请求

 

2.1 使用libcurl的大概流程
curl_easy_init()
curl_easy_setopt()
curl_easy_perform()
curl_easy_cleanup()
呵呵~超简单的吧,具体的意思这里就不详细说了,参见http://curl.haxx.se/libcurl/c/

 

2.2 再来看简单的代码

  1. #include <stdio.h>  
  2. #include <stdlib.h>  
  3. #include <string.h>  
  4. #include <curl/curl.h>  
  5.   
  6. #define POSTURL "http://www.xiami.com/member/login"  
  7. #define POSTFIELDS "email=myemail@163.com&password=mypassword&autologin=1&submit=登 录&type="  
  8. #define FILENAME "curlposttest.log"  
  9.   
  10. size_t write_data(void *buffer, size_t size, size_t nmemb, void *userp);  
  11.   
  12. int main(int argc, char *argv[]) {  
  13.     CURL *curl;  
  14.     CURLcode res;  
  15.     FILE *fptr;  
  16.     struct curl_slist *http_header = NULL;  
  17.   
  18.     if ((fptr = fopen(FILENAME, "w")) == NULL) {  
  19.         fprintf(stderr, "fopen file error: %s\n", FILENAME);  
  20.         exit(1);  
  21.     }  
  22.   
  23.     curl = curl_easy_init();  
  24.     curl_easy_setopt(curl, CURLOPT_URL, POSTURL);  
  25.     curl_easy_setopt(curl, CURLOPT_POSTFIELDS, POSTFIELDS);  
  26.     curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_data);  
  27.     curl_easy_setopt(curl, CURLOPT_WRITEDATA, fptr);  
  28.     curl_easy_setopt(curl, CURLOPT_POST, 1);  
  29.     curl_easy_setopt(curl, CURLOPT_VERBOSE, 1);  
  30.     curl_easy_setopt(curl, CURLOPT_HEADER, 1);  
  31.     curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1);  
  32.     curl_easy_setopt(curl, CURLOPT_COOKIEFILE, "/Users/zhu/CProjects/curlposttest.cookie");  
  33.     res = curl_easy_perform(curl);  
  34.     curl_easy_cleanup(curl);  
  35. }  
  36.   
  37. size_t write_data(void *buffer, size_t size, size_t nmemb, void *userp) {  
  38.     FILE *fptr = (FILE*)userp;  
  39.     fwrite(buffer, size, nmemb, fptr);  
  40. }  

2.3 说下这当中的一些操作吧

CURLOPT_URL: URL地址
CURLOPT_POSTFIELDS: POST参数
CURLOPT_WRITEFUNCTION: 对返回的数据进行操作的函数地址
CURLOPT_WRITEDATA: 设置WRITEFUNCTION的第四个参数值
CURLOPT_POST: 设置为非0表示本次操作为POST
CURLOPT_VERBOSE: 设置为非0在执行时打印请求信息
CURLOPT_HEADER: 设置为非0将响应头信息同响应体一起传给WRITEFUNCTION
CURLOPT_FOLLOWLOCATION: 设置为非0,响应头信息Location

CURLOPT_COOKIEFILE: 哈哈,这个实在是太重要了,我之前尝试了好多次没法验证该次POST是否成功的原因就是没有设置这个罗。设置对应的COOKIEFILE路径,该路径文件并不一定需要在物理磁盘上实际存在

 

2.4 接下来是成功返回的结果哦,呵呵,下面截图当中的zhuzhu可以为证,不好意思,xiami上取了个比较CUO的名字~

 



转自:http://finux.iteye.com/blog/715247


libcurl简介及其编程应用 阅读详情

相关推荐

点云体素化算法研究-3.Voxelization 三维模型体素化

体素(voxel)即体积元素的简称,是数字数据在三维空间分割上的最小的单位。体素化就是通过创建三维体素网格来表示三维物体,是一种将无序点云变为有序点云的降采样的空间数据结构方法,便于实现点云的空间卷积。激光雷达(LiDAR)| Open3D:第五节 表面重建-体素化。

周陽讀書 2065

libcurl post 请求

libcurl 是一个使用比较广泛,并且使用很方便的http请求库。 对于http post请求,根据head 部分的Content-Type 的不同,处理方式也不同。1. 普通post请求 一般的post请求格式: Content-Type: application/x-www-form-urlencoded 对应请求数据包:POST /test.php HTTP/1.1 Accept: */

lacoucou的专栏 6004

若依(RuoYi)框架从零到部署:Spring Boot+Vue权限系统完整配置指南

在Java企业级应用开发中,Spring Boot作为构建微服务和单体应用的基石,极大地简化了项目初始化和配置流程。其核心原理在于通过自动配置和起步依赖,快速整合数据访问、安全认证、缓存等常用模块,显著提升开发效率。这一技术价值在需要快速构建后台管理系统的场景中尤为突出,例如权限管理、用户角色分配等通用需求。若依(RuoYi)框架正是基于Spring Boot和Vue.js的优秀实践,它封装了RBAC权限模型、代码生成器等高频功能,提供了开箱即用的解决方案。本文聚焦于若依框架的【环境配置】与【项目部署】,通

weixin_33984032的博客 455

libcurl进行post

libcurl进行post main函数,初始化和清理curl // 全局初始化curl curl_global_init(CURL_GLOBAL_ALL); std::string url = "http://xxxx"; std::string postParams = "aa=33&bb=33"; std::string response; curl_post_req("http://sss", "aa=33&bb=33", response); // 程序结束前清理curl

qq_23350817的博客 1355

Android Studio运行报错: failed to load include path ……\platforms\android-35\android.jar的最细解决方案

【代码】Android Studio运行报错: failed to load include path ……\platforms\android-35\android.jar的最细解决方案。

2401_86789230的博客 2万+

threejs开发可视化数字城市效果

theme: condensed-night-purple 灵感图 现在随着城市的发展,越来越多的智慧摄像头,都被互联网公司布到城市的各个角落,举一个例子,一个大楼上上下下都被布置了智能摄像头,用于监控火势,人员进出,工装工牌佩戴等监控,这时候为了美化项目,大公司都会将城市的区域作为对象,进行3d可视化交互,接下来的内容,就是基于以上元素,开发的一款城市数据可视化的demo,包含楼宇特...

weixin_41770018的博客 1579

libcurl 实现http post请求和http文件下载(C语言)

libcurl 实现http post请求和http文件下载

qq_42161913的博客 3080

用SOLIDWORKS从零画一个履带机器人,手把手教你搞定底盘和传动

本文详细介绍了如何使用SOLIDWORKS从零开始设计履带式机器人,重点讲解底盘结构优化和传动系统设计的关键步骤。通过七个阶段的实战指南,包括前期规划、底盘建模、驱动系统装配、履带生成、动态模拟等,帮助工程师和爱好者掌握履带机器人的核心设计技巧,提升地形适应能力和动力效率。

weixin_30872499的博客 632

C/C++中libcurl的使用-提交 Http Post请求

之前介绍了使用libcurl的HTTP GET将url地址中内容下载到本地 C/C++中libcurl的使用-Http GET方法使用详解,在更早的文章Linux下使用CURL模拟用户提交post表单中也介绍过在Linux环境使用curl命令提交POST表单。本文介绍使用libcurl的HTTP POST实现表单的提交,并获取表单的结果。 libcurl的相关接口已经在上一篇文章中介绍,本文只介

cjf_wei的博客 3万+

薅“刷宝”羊毛的autojs脚本教程,简单粗暴好用!!!

本教程旨在帮助大家实现用手机或闲置手机来进行“刷宝”平台的收益,能薅多少米就看你的本事了,作者教你的是如何用autojs来进行脚本的挂机教程,掌握了这个思路后,你可以根据自己的实际需要来改进脚本或者撸别的平台:) 适用系统,**android4.0以上,苹果机暂不适用**(大多数android系统手机都是7.0以上,要查看自己手机是android几,见文件夹“视频教程-基础”>1.查看android版本的方法)

rousseaou8的博客 8万+

数据库小技能:数据导入脚本

背景:版本大升级,从2.0升级到3.0 ,服务端开发语言从c#换到java语言。数据库类型从microsalft sql server 换到mysql。数据来源于微信,用于查询卡bin。

专注于计算机研发知识和资讯分享 772

使用libcurl提交POST请求(二)

最近在学习libcurl,并利用它提交POST请求,可是返回的响应总是无从验证该次POST请求是否成功提交了。 1. 先看下根据firebug提交的一次成功的请求,这里以login我喜欢上的xiami为例,嘻嘻~   1.1 本次POST请求的HTTP交互   1.2 POST   1.3 经server端redirect的GET

bible521125的专栏 653

【matlab】基于 Simulink 的空调恒温控制系统仿真建模

本文介绍了基于Simulink的空调恒温控制系统仿真建模方法。系统采用PID控制算法,通过传感器测量温度、控制器计算信号、执行器调节功率来实现恒温控制。文章详细阐述了Simulink模型搭建步骤,包括PID控制器、房间热力学特性模拟等模块的实现,并提供了测试流程和多种实际部署场景。该方法可有效验证控制算法性能,优化系统设计,适用于家用、商用、工业及汽车空调系统。未来可结合智能算法和节能优化技术进一步提升系统性能。

走向CTO的路上... 917

java libcurl post参数_C/C++中libcurl的使用-提交 Http Post请求

之前介绍了使用libcurl的HTTP GET将url地址中内容下载到本地C/C++中libcurl的使用-Http GET方法使用详解,在更早的文章Linux下使用CURL模拟用户提交post表单中也介绍过在Linux环境使用curl命令提交POST表单。本文介绍使用libcurl的HTTP POST实现表单的提交,并获取表单的结果。libcurl的相关接口已经在上一篇文章中介绍,本文只介绍新增...

weixin_39823200的博客 304

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

linux libcurl传参数,linux使用libcurl提交POST请求

http://blog.youkuaiyun.com/zengraoli/article/details/115225632013最近在学习libcurl,并利用它提交POST请求,可是返回的响应总是无从验证该次POST请求是否成功提交了。1. 先看下根据firebug提交的一次成功的请求,这里以login我喜欢上的xiami为例,嘻嘻~1.1本次POST请求的HTTP交互1.2 POST1.3经serv...

weixin_28791139的博客 709

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

C++:Http Post请求(附带源码)

通过这个项目,我们实现了一个简单的C++程序,使用libcurl库发送HTTP POST请求。这个示例可以扩展以支持不同类型的数据(如表单数据、文件上传等)以及更复杂的HTTP请求(如带认证的请求、GET请求等)。

欢迎来到我的博客!这里是一个专注于计算机技术的分享平台,涵盖编程开发、算法研究、系统架构、软件工程等多个领域。无论你是初学者还是资深开发者,都能在这里找到有价值的内容。 1941

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

libcurl 提交post表单数据与上传图片 Demo

libcurl 提交post表单数据与上传图片 Demo 去发现同类优质开源项目:https://gitcode.com/ 此仓库包含了一个使用libcurl库提交POST表单数据以及上传图片的示例程序。该程序基于网页请求协议,能够模拟POST表单的提交方式,上传数据,并能对返回的数据进行处理。 功能简介 表单数据提交:通过libcurl,可以构造并提交POST请求,将表单数据发送到服务器。 图...

gitblog_06794的博客 425

Cocos2d-x中libcurl库的使用(3)HTTP的介绍

1、HTTP验证 HTTP目前支持的验证方法有:basic、Digest、NTLM、Negotiate、GSS-Negotiate、SPENGO,可以通过CURLOPT_HTTPAUTH属性来设置具体的验证方式,如:curl_easy_setopt(easy_handle,CURLOPT_HTTPAUTH,CURLAUTH_DIGEST);向代理服务器发送验证信息时,可以通过CURLOPT_PR

yuxikuo_1的专栏 1616

libcurl上传文件到服务器的几种方式

提交表单方式/*************************************************************************** * _ _ ____ _ * Project ___| | | | _ \| | *

Yy 1万+
上一篇: c++ curl模拟登陆
下一篇: libcurl 库的ftp上传和下载代码
「已注销」
博客等级 码龄14年 116粉丝 43原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值