解决C语言实现https、http提交multipart/form-data但是服务器无法解析的问题

一.背景

项目中用C语言实现一个客户端,通过http或https向服务器提交multipart/form-data类型的数据。

二.问题

数据提交后服务器只返回响应头,没有响应实体内容,经和后端研发沟通,得知是后端服务没有解析出form-data数据。

三.解决方法

1。使用postman测试,可以收到正常响应数据。

2。逐字节比对C程序提交内容和postman提交内容,发现boundary字段有差异,

例:

POST /testpath HTTP/1.1
Host: server_ip_or_dns
Content-Type: multipart/form-data; boundary=--------------------------193309464164257718226442
Content-Length: N
----------------------------193309464164257718226442
Content-Disposition: form-data; name="ID"
 
00110011
----------------------------193309464164257718226442--
 
这里有2处值得注意的地方,
(1)Content-Type: multipart/form-data; boundary=--------------------------193309464164257718226442行比
----------------------------193309464164257718226442行的 “-”个数少2个;多的这两个“-”暂且理解为“开始标志”吧。
 
(2)Content-Disposition: form-data; name="ID"行,Content-Disposition:和form-data;之间必须加空格。同时,
 form-data;和name="ID"之间必须加空格。
 
其实,(1)和(2)的内容都在《RFC 1867》有所体现的,只怪没仔细看。囧。。。
 
posted @   彭城老朽  阅读(790)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
点击右上角即可分享
微信分享提示