POST字符串

#include <stdio.h>
#include <curl/curl.h>int main(void)
{CURL* curl = NULL;CURLcode res;curl = curl_easy_init();if(curl == NULL) {return CURLE_FAILED_INIT;}struct curl_slist* headerlist = NULL; // 设置表头,表头内容可能不同headerlist = curl_slist_append(headerlist, "Content-Type:application/x-www-form-urlencoded");curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headerlist);  // 设置URLcurl_easy_setopt(curl, CURLOPT_URL, "http://postit.example.com/moo.cgi");// 设置参数,比如"ParamName1=ParamName1Content&ParamName2=ParamName2Content&..."curl_easy_setopt(curl, CURLOPT_POSTFIELDS, "name=daniel&project=curl");// 设置为Postcurl_easy_setopt(curl, CURLOPT_POST, 1);// 发送res = curl_easy_perform(curl);if(res != CURLE_OK){// 获取详细错误信息char* szErr = curl_easy_strerror(res);fprintf(stderr, "curl_easy_perform() failed: %s\n", szErr);}// 清空
    curl_easy_cleanup(curl);// 释放表头
    curl_slist_free_all (headerlist);  return 0;
}

POST文件

#include <stdio.h>
#include <curl/curl.h>size_t OnWriteData(void* buffer, size_t size, size_t nmemb, void* lpVoid);int main(void)
{CURL* curl = NULL;CURLcode res;curl = curl_easy_init();if(curl == NULL) {return CURLE_FAILED_INIT;}struct curl_slist*        headerlist    = NULL; struct curl_httppost*    formpost    = NULL;struct curl_httppost*    lastptr        = NULL;std::string strResponse;    // 回复
 curl_formadd(&formpost, &lastptr, CURLFORM_COPYNAME, "ParamName1", CURLFORM_COPYCONTENTS, "ParamName1Content", CURLFORM_END);curl_formadd(&formpost, &lastptr, CURLFORM_COPYNAME, "ParamName2", CURLFORM_COPYCONTENTS, "ParamName2Content", CURLFORM_END);curl_formadd(&formpost, &lastptr, CURLFORM_COPYNAME, "ParamName3", CURLFORM_COPYCONTENTS, "ParamName3Content", CURLFORM_END);curl_formadd(&formpost, &lastptr, CURLFORM_COPYNAME, "registerImgs", CURLFORM_FILE, "C:/Image.png", CURLFORM_END);    // 设置要上传的文件// 设置表单参数
    curl_easy_setopt(curl, CURLOPT_HTTPPOST, formpost);// 设置表头,表头内容可能不同headerlist = curl_slist_append(headerlist, "Content-Type:application/x-www-form-urlencoded");curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headerlist);  // 设置URLcurl_easy_setopt(curl, CURLOPT_URL, "http://postit.example.com/moo.cgi");// 设置参数,比如"ParamName1=ParamName1Content&ParamName2=ParamName2Content&..."curl_easy_setopt(curl, CURLOPT_POSTFIELDS, "name=daniel&project=curl");// 设置为Postcurl_easy_setopt(curl, CURLOPT_POST, 1);curl_easy_setopt(curl, CURLOPT_READFUNCTION, NULL);curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, OnWriteData);curl_easy_setopt(curl, CURLOPT_WRITEDATA, (void*)&strResponse);curl_easy_setopt(curl, CURLOPT_NOSIGNAL, 1);curl_easy_setopt(curl, CURLOPT_CONNECTTIMEOUT, 3);curl_easy_setopt(curl, CURLOPT_TIMEOUT, 3);// 发送res = curl_easy_perform(curl);if(res != CURLE_OK){// 获取详细错误信息char* szErr = curl_easy_strerror(res);fprintf(stderr, "curl_easy_perform() failed: %s\n", szErr);}// 清空
    curl_easy_cleanup(curl);// 释放表单
    curl_formfree(formpost);// 释放表头
    curl_slist_free_all (headerlist);  return 0;
}size_t OnWriteData(void* buffer, size_t size, size_t nmemb, void* lpVoid)
{std::string* str = dynamic_cast<std::string*>((std::string *)lpVoid);if( NULL == str || NULL == buffer ){return -1;}char* pData = (char*)buffer;str->append(pData, size * nmemb);return nmemb;
}

转载于:https://www.cnblogs.com/liuzhenbo/p/11053531.html

C++用libcurl通过HTTP以表单的方式Post数据到服务器相关推荐

  1. qt向服务器传输文字_Qt 模拟 HTTP 表单提交文字或文件到服务器

    传统通过 HTTP 表单的方式来上传文件在 Web 中实现是非常简单的,一个表单中加几个域填写上对应的内容提交就可以了,但如果通过 Qt 来实现就相对麻烦一点,不过我都总结好了代码,直接使用就可以了. ...

  2. 为ASP.NET MVC配置基于Active Directory的表单认证方式

    为ASP.NET MVC配置基于Active Directory的表单认证方式 最近一直在研究基于Active Directory的表单认证方式,同时也在关注ASP.NET MVC的情况,同时也在应用 ...

  3. js实现Form表单submit提交截获数据(各浏览器通用)

    js实现Form表单submit提交截获数据(各浏览器通用) js实现Form表单submit提交截获数据(各浏览器通用) No Comments | js , 安全 , PHP | by calms ...

  4. post 表单中常见的四种表单请求方式

    //post 表单中常见的四种表单请求方式 typedef enum {     postformURLEncoded,                 /*对应Content-Type: appli ...

  5. python表单提交的两种方式_Flask框架学习笔记之表单基础介绍与表单提交方式

    本文实例讲述了Flask框架学习笔记之表单基础介绍与表单提交方式.分享给大家供大家参考,具体如下: 表单介绍 表单是HTML页面中负责数据采集功能的部件.由表单标签,表单域和表单按钮组成.通过表单,将 ...

  6. ExtJs 备忘录(4)—— Form表单(四) [ 数据提交 ]

    一.截图和示例共用Ext.FormPanel 1.1 截图 由于本文主要关注的是表单提交的几种方式,所以仅用了一个表单项以便于测试和减少示例代码. 1.2 示例共用Ext.FormPanel      ...

  7. web元件库、axure元件库、通用元件库、常用web组件、常用表单、框架、数据表单、导航栏、边框、图标、列表、日期时间选择器、评分组件、穿梭框、输入框、步骤条、图表组件、数据可视化、后台模板、时间轴

    web元件库.axure元件库.通用元件库.常用web组件.常用表单.框架.数据表单.导航栏.边框.图标.列表.日期时间选择器.评分组件.穿梭框.输入框.步骤条.图表组件.数据可视化.后台模板.时间轴 ...

  8. Javaweb 快速入门之jsp基本语法表单提交方式request对象

    文章目录 一.jsp简介 二.jsp之表单提交方式 三.jsp内置函数 总结 一.jsp简介 1.jsp简介             (1)jsp全称:java server pages java服务 ...

  9. blur表单验证方式

    表单验证方式 * 思路:* 1 给每个input添加失去焦点事件,输入完毕后进行校验* 校验给错误提示 * 2. 表单提交数据的时候 进行判断 * 是否有错误信息提示 如果有,不能提交数据 <b ...

最新文章

  1. 关闭swap的危害——一旦内存耗尽,由于没有SWAP的缓冲,系统会立即开始OOM
  2. UA MATH567 高维统计IV Lipschitz组合8 随机投影与John-Lindenstrauss引理
  3. PostgreSQL 分页——示例
  4. .net 从txt中读取行数据_【VBA项目】从指定文件中读取数据并绘制图表
  5. (21)css3盒模型box-sizing属性
  6. matepad适配鸿蒙,消息称华为 MatePad2 搭载骁龙888 4G 华为鸿蒙OS计划适配高通平台...
  7. 网络嗅探器如何嗅探_SQL Server中的运行时常量嗅探
  8. 基于深度学习算法的NLP集成工具
  9. Spring boot 跨域请求实现方式汇总
  10. 磁盘不见了只剩一个c盘_教你如何处理只剩一个C盘
  11. 使用CSS制作图片相框以及图片放大旋转效果
  12. 过往云烟~如梦随风飘!!!
  13. 2015.4.28 今天开博客了
  14. 使用Python查看sqlite3表结构
  15. 最新微信ipad协议 CODE获取 公众号授权等
  16. 台式机安装EXSI,通过官方方式定制安装包
  17. 元宇宙-漫游世界后与Cocos一起看湖南卫视直播
  18. 当IM和同学录走到一起
  19. 2008年世界顶级杀毒软件排行榜
  20. C# Winform添加背景图片后加载的时候控件卡

热门文章

  1. 跳槽必加薪?跳槽是涨薪最快的方式么
  2. python中单下划线(_)和双下划线(__)的特殊用法 还等什么
  3. 【TensorFlow】TensorFlow函数精讲之tf.constant()
  4. 经验 | 清华大学计算机系教授~浅谈研究生学位论文选题方法
  5. Python优雅地可视化数据
  6. 数据结构(十)二叉排序树
  7. angular中如何定义全局变量_如何在Angular 2 / Typescript中声明全局变量?
  8. android tcp socket框架_花了一个星期,我终于把RPC框架整明白了
  9. 均匀化退火时间_热处理4把火:淬火、回火、正火、退火,都分清楚了么?
  10. wamp惯用的php框架_wamp集成环境php多版本搭建(php5.5,php5.6,php7.0.6)