由于有個微信平臺的項目需求,就去看了一下微信公眾平臺的接口,發現微信平臺上傳下載附件需要使用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郁悶。
就是這里的結束邊界前后少了 .