由Http Post提交遇到的一个坑,深入详解4种Post发送数据编码方式

本文深入探讨了Http Post提交时遇到的问题,分析了HttpClient对空值参数的处理,详细解释了HTTP的四种Post编码方式:application/x-www-form-urlencoded、multipart/form-data、application/json和text/xml,并讨论了实际应用开发中的使用场景和Http编码传输的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

由Http Post提交遇到的一个坑,深入详解4种Post发送数据编码方式

阅读引导

1、Http post的4中提交方式详解

2、遇到的一个较深的坑,以及解决思路。

最近团队的某个项目遇到一个诡异的问题。

通过生产应用程序调用客户的服务时,报错500.

但是,通过Postman模拟报文发送相同,却返回正确。

难点在于客户的生产程序没有打日志……据了解,客户使用的是C#开发,开发人员已经交接过多次,无法确认程序问题。

不过幸好,这个客户提供的服务通信协议是Http。也就是说,可以通过网络抓包解决。

1

解决路径

由于是客户报错500,而对方又不配合排查,且程序没有打印日志,只能猜测那个地方可能出问题。(苦逼的乙方)

一个大背景是在去年,双方已经在测试环境经过了验证,然后投产了。

但是双方程序员都坚称自己没有改动过程序……

经过一系列的混乱后,制定了解决路径方法。

首先,业务协调客户开发人员加上日志,在晚上配合临时替换生产程序,查出到底是哪里报错。

其次,生产环境抓包,本地互联网环境也抓postman 的发送请求报文,比较异同点。(幸好对方是http)

2

问题原因

由于开发环境管控,开发人员进行postman发送,并安装wireshark抓包,进展缓慢。

幸而,客户方面取得突破。

上线日志打印之后,终于发现问题。

客户程序对于Http请求报文序列化之后,得到的参数有一些是空,但是我方发送报文明明是发送了参数。

然后,客户又在处理Http报文的入口,进来就打印程序,发现所有的参数全部都存在。

因此,怀疑是客户那边自己的程序出了问题。

但是,后来客户坚称没有改动,也不愿因此改动。

比对了一些Http请求报文后,发现入口程序打印的请求参数部分类似这样:&syscode&transcode=12345

客户开发人员称:对方是C#的处理框架,对于参数为空的方式,也必须送“=”,也就是说,上面部分的内容应该是:&syscode

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值