由于有个微信平台的项目需求,就去看了一下微信公众平台的接口,发现微信平台上传下载附件需要使用ucrl命令,所以在LINUX上试了一下该命令:
curl -F @123.image http://.......
服务端接受附件代码是自己写的,反正都是form表单提交
后来查了一下资料,发现,用Java调用curl命令,还是挺麻烦的,不就上传个附件吗,还不如自己模拟客户端上传。接下来就写了一天模拟客户端上传的代码。
测试后发现,上传不 了,服务端报了:Processing of multipart/form-data request failed. Stream ended unexpectedly.
F,继续调试,改了几遍还是这样,google了一下,发现很多人是因为页面突然关闭,导致文件没有上传完,或文件太大,所以服务端就报了流意外的结束。我心想,我用的是代码,都是传输完才close的,不可能啊,而且文件才几K,我索性把close都注释掉测试,还是老样子。我怀疑是不是服务端代码问题,再写了个简单的上传页试了一下,可以啊,页面跟curl都没有问题,那服务端代码应该没问题了,继续关注模拟代码。我觉得应该是我们的报文哪里不对,所以读取的时候就报错了,看了下apach包的源码,有可能是由于流转换成报文的时候监测到报文不全所导致的,然后我用火狐调试查看了一下http请求信息和我们模拟的有什么不同,开始还真没看出什么问题,后台打印一下,才知道,原来少了两个换行符号。妈呀,真TM郁闷。
就是这里的结束边界前后少了\r\n.
时间: 2024-10-27 11:23:09