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); // 设置URL
curl_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"); // 设置为Post
curl_easy_setopt(curl, CURLOPT_POST, ); // 发送
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 ;
}

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); // 设置URL
curl_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"); // 设置为Post
curl_easy_setopt(curl, CURLOPT_POST, ); 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, );
curl_easy_setopt(curl, CURLOPT_CONNECTTIMEOUT, );
curl_easy_setopt(curl, CURLOPT_TIMEOUT, ); // 发送
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 ;
} 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 -;
} char* pData = (char*)buffer;
str->append(pData, size * nmemb);
return nmemb;
}

C++用libcurl通过HTTP以表单的方式Post数据到服务器的更多相关文章

  1. html表单提交方式

    xml 表单提交方式: * 使用submit提交 <form> 要提交的数据 <input type="submit" /'> </form> ...

  2. Servlet路径跳转1---使用相对路径和绝对路径,在页面上调用servlet的路径写法(超链接的方式和表单的方式)

    课程1-13   http://www.imooc.com/video/5554 Servlet路径跳转: 绝对路径:放在任何地方都对的路径 相对路径:相对于当前资源的路径 index文件 加上/,表 ...

  3. c#_表单处理方式

    阅读目录 开始 简单的表单,简单的处理方式 表单提交,成功控件 多提交按钮的表单 上传文件的表单 MVC Controller中多个自定义类型的传入参数 F5刷新问题并不是WebForms的错 以Aj ...

  4. ANDROID使用MULTIPARTENTITYBUILDER实现类似FORM表单提交方式的文件上传

    最近在做 Android 端文件上传,要求采用 form 表单的方式提交,项目使用的 afinal 框架有文件上传功能,但是始终无法与php写的服务端对接上,无法上传成功.读源码发现:afinal 使 ...

  5. php框架中的phalcon框架的安装,及初步认识,从表单提交简单的数据到数据库中

    php框架中的phalcon框架的安装,及初步认识,从表单提交简单的数据到数据库中 1.phalcon框架的安装: phalcon框架在windows本地安装可以利用wamp软件,安装之后可以查看对应 ...

  6. JavaWeb学习日记----表单提交方式

    1.表单提交方式 (1) 使用input控件中的submit提交 代码如下: <!DOCTYPE html> <html lang="en"> <he ...

  7. 雷林鹏分享:jQuery EasyUI 表单 - 过滤下拉数据网格

    jQuery EasyUI 表单 - 过滤下拉数据网格 下拉数据网格(Combogrid)组件和下拉框(Combobox)组件的共同点是,除了都具有下拉面板以外,它们都是基于数据网格(Datagrid ...

  8. Ext表单提示方式:msgTarget

    Ext.QuickTips.init();  Ext.form.Field.prototype.msgTarget = 'side'; Ext表单提示方式:msgTarget:有4中方式:qtip,t ...

  9. form表单提交方式

    form表单提交方式总结一下: 一.利用submit按钮实现提交,当点击submit按钮时,触发onclick事件,由JavaScript里函数判断输入内容是否为空,如果为空,返回false, 不提交 ...

随机推荐

  1. IOCTL_DISK_GET_DRIVE_GEOMETRY

    IOCTL_DISK_GET_DRIVE_GEOMETRY: 获取磁盘参数 c++实现: #include <Windows.h> #include <winioctl.h> ...

  2. OSDA - 一个以MIT协议开源的串口调试助手

    市场其实有很多开源的串行端口调试助手(Open Serial Port debug assistant),但其中很大一部分没有明确的开源协议,还有一部分只限个人使用,所以编写了一个并以MIT协议授权开 ...

  3. 023-PHP常用数组函数

    <?php $colors = array("red", "green", "blue","yellow"); p ...

  4. 十四、 React路由(react-router4.x): 动态路由、get传值、React中使用url模块

    概述 新闻列表 -跳转-> 详情页 时,想把列表对应的id传到详情页里,可用到三种传值方法: 1.动态路由传值 2.get传值 3.localstorage传值 一.动态路由传值 [App.js ...

  5. MongoDB 教程

    版权所有,未经许可,禁止转载 章节 MongoDB 入门 MongoDB 优势 MongoDB 安装 MongoDB 数据建模 MongoDB 创建数据库 MongoDB 删除数据库 MongoDB ...

  6. Docker Java 例子

    版权所有,未经许可,禁止转载 章节 Docker 介绍 Docker 和虚拟机的区别 Docker 安装 Docker Hub Docker 镜像(image) Docker 容器(container ...

  7. 设置此div的子元素居中显示

    下面样式设置到父div上: .modal { display: flex; align-items: center; /*竖直居中 垂直居中*/ justify-content: center; /* ...

  8. 文献阅读报告 - Context-Based Cyclist Path Prediction using RNN

    原文引用 Pool, Ewoud & Kooij, Julian & Gavrila, Dariu. (2019). Context-based cyclist path predic ...

  9. Flexslider插件实现图片轮播、文字图片相结合滑动切换效果

    插件下载: 点击下载 密码: fbeg Flexslider具有以下特性: 支持滑动和淡入淡出效果. 支持水平.垂直方向滑动. 支持键盘方向键控制. 支持触控滑动. 支持图文混排,支持各种html元素 ...

  10. Caused by: com.mysql.cj.exceptions.DataReadException: Zero date value prohibited

    原因:数据库日期出现零值,即0000-00-00 属于一个无效日期. 解决方案:重新赋值,或者在jdbc链接后加参数zeroDateTimeBehavior=convertToNull