VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

搜索
查看: 4064|回复: 4

libcurl发送formData包含二进制数据

[复制链接]
32_avatar_middle
最佳答案
0 
在线会员 发表于 2019-3-29 10:09:37 | 显示全部楼层 |阅读模式
3驿站币
普通的formdata可以使用,但是如果表单有二进制数据的话需要怎么处理, 我查了很多资料,大部分是文件上传的,我不知道这一步该如何转换?





上一篇:新人请教学完C++基础后续如何学习问题
下一篇:棱型星星main函数递归实现
32_avatar_middle
最佳答案
0 
ico_lz  楼主| 发表于 2019-3-29 10:16:46 | 显示全部楼层
说白了就是:当POST请求是 既包含图片二进制 又包含字符串参数,该怎么处理?
51_avatar_middle
最佳答案
82 
online_admins 发表于 2019-3-29 12:43:17 | 显示全部楼层
这个用 fiddler 抓一下浏览器的包,看看浏览器是怎么处理的。
之后用我们的代码模拟出来就可以了,问题不大
32_avatar_middle
最佳答案
0 
ico_lz  楼主| 发表于 2019-3-29 13:42:24 | 显示全部楼层
Syc 发表于 2019-3-29 12:43
这个用 fiddler 抓一下浏览器的包,看看浏览器是怎么处理的。
之后用我们的代码模拟出来就可以了,问题不 ...

好像组装formdata的形式, 主要是这个binary不知道怎么添加进去
30_avatar_middle
最佳答案
0 
在线会员 发表于 2019-11-26 11:15:41 | 显示全部楼层
设置一下要发送的size就行,把要发送的数据放到缓冲区
curl_easy_setopt(curl, CURLOPT_POSTFIELDSIZE, size);

int HTTP_CLIENT::post_binary(const char *url, const void*post_data, int size)
{
        CURLcode res;
        data.offset = 0;
        curl_easy_setopt(curl, CURLOPT_URL, url);
        curl_easy_setopt(curl, CURLOPT_POST, 1);
        curl_easy_setopt(curl, CURLOPT_POSTFIELDS, post_data);
        curl_easy_setopt(curl, CURLOPT_POSTFIELDSIZE, size);
        curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_fun);
        curl_easy_setopt(curl, CURLOPT_WRITEDATA, &data);
        res = curl_easy_perform(curl);

        if (res != CURLE_OK)
        {
                cout << curl_easy_strerror(res) << endl;
                data.offset = -1;
                return -1;
        }
        return data.offset;
}
您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

×【发帖 友情提示】
1、请回复有意义的内容,请勿恶意灌水;
2、纯数字、字母、表情等无意义的内容系统将自动删除;
3、若正常回复后帖子被自动删除,为系统误删的情况,请重新回复其他正常内容或等待管理员审核通过后会自动发布;
4、感谢您对VC驿站一如既往的支持,谢谢合作!

关闭

站长提醒上一条 /2 下一条

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号 )|网站地图wx_jqr

GMT+8, 2020-9-21 02:28

Powered by CcTry.CoM

© 2009-2020 cctry.com

快速回复 返回顶部 返回列表