关于C++使用libcurl提交表单方式上传文件时提交表单参数[同HTML表单]
来源:互联网 发布:mac zookeeper 客户端 编辑:程序博客网 时间:2024/05/17 07:33
C++与Java后台交互,避免不了使用HTTP协议,这时候对于C++来说libcurl就派上用场了,简单的参数传递比较简单,涉及到文件上传和下载的时候就稍微复杂点了,具体示例如下:
int http_post_file(const char *url, const char *user, const char *pwd, const char *filename)
{
assert(url != NULL);
assert(user != NULL);
assert(pwd != NULL);
assert(filename != NULL);
int ret = -1;
CURL *curl = NULL;
CURLcode code;
CURLFORMcode formCode;
int timeout = 15;
#define CHECK_FORM_ERROR(x) /
if ((formCode = (x)) != CURL_FORMADD_OK) /
{ /
fprintf(stderr, "curl_formadd[%d] error./n", formCode); /
goto out; /
}
#define CHECK_SETOPT_ERROR(x) /
if ((code = (x)) != CURLE_OK) /
{ /
fprintf(stderr, "curl_easy_setopt[%d] error./n", code); /
goto all; /
}
struct curl_httppost *post=NULL;
struct curl_httppost *last=NULL;
struct curl_slist *headerlist=NULL;
CHECK_FORM_ERROR( curl_formadd(&post, &last, CURLFORM_COPYNAME, "user",
CURLFORM_COPYCONTENTS, user,
CURLFORM_END));
CHECK_FORM_ERROR( curl_formadd(&post, &last, CURLFORM_COPYNAME, "password",
CURLFORM_COPYCONTENTS, pwd,
CURLFORM_END));
CHECK_FORM_ERROR( curl_formadd(&post, &last, CURLFORM_COPYNAME, "file",
CURLFORM_FILE, filename,
CURLFORM_END));
CHECK_FORM_ERROR( curl_formadd(&post, &last,
CURLFORM_COPYNAME, "submit",
CURLFORM_COPYCONTENTS, "upload",
CURLFORM_END));
curl = curl_easy_init();
if(curl == NULL)
{
fprintf(stderr, "curl_easy_init() error./n");
goto out;
}
CHECK_SETOPT_ERROR(curl_easy_setopt(curl, CURLOPT_HEADER, 0));
CHECK_SETOPT_ERROR(curl_easy_setopt(curl, CURLOPT_URL, url));
CHECK_SETOPT_ERROR(curl_easy_setopt(curl, CURLOPT_HTTPPOST, post));
CHECK_SETOPT_ERROR(curl_easy_setopt(curl, CURLOPT_TIMEOUT, timeout));
code = curl_easy_perform(curl);
if(code != CURLE_OK)
{
fprintf(stderr, "curl_easy_perform[%d] error./n", code);
goto all;
}
ret = 0;
all:
curl_easy_cleanup(curl);
out:
curl_formfree(post);
return ret;
}
- 关于C++使用libcurl提交表单方式上传文件时提交表单参数[同HTML表单]
- libcurl提交表单上传文件
- libcurl提交表单上传文件
- 使用httpclient提交表单方式上传文件
- 表单提交文件上传
- 提交表单上传文件
- java 模拟表单方式提交上传文件
- 表单上传文件提交实现ajax方式
- java 模拟表单方式提交上传文件
- 表单提交上传文件代码(Ext,C#)
- HTML表单的提交方式
- html表单提交的方式
- 使用ajax提交表单或上传文件
- Retrofit 多种提交方式 表单提交、多文件上传
- HttpURLConnection 提交表单+ 上传文件
- Ajax表单提交上传文件
- 文件上传,表单提交插件
- php上传文件--表单提交
- ubuntu下vim的安装及常用编程习惯设置
- android 相机开发
- C#通过程序内部注册ACTIVE控件
- stm32学习笔记(十)输入捕获实验
- less的安装、实例及格式转换(入门级)
- 关于C++使用libcurl提交表单方式上传文件时提交表单参数[同HTML表单]
- 用Jenkins的Windows batch command编译各种类型的项目
- ScrollView滑动到底部的监听
- java中怎样随机生成一个数
- P3370 【模板】字符串哈希
- 利用Filter完成的登录功能【练习】
- 利用NPOI操作excel导入
- HDU 6129 Just do it
- P3370 [模板] 字符串哈希