post multipart data boundary問題 使用curl 向jersey post文件


原以為curl 模擬post file跟post string類似,-d參數一加 ,header一加就完了,這次遇到個問題,卻怎么都搞不定。

curl模擬post提交

與客戶端定的協議是:

 

Header

Content-Type: multipart/form-data;

Body

Content-Disposition: form-data; name="file"; filename="xx.jpg"

Content-Type: image/jpeg

 使用curl時,想模擬客戶端,結果使用--form 參數傳遞body時報錯:

IllegalArgumentException: Error parsing content disposition: form-data; name="----7db372eb000e2\r\n Content-Disposition:"form-data";name"

搜了一下post的數據格式,發現需要加boundary,於是加上boundary做post

使用-d參數傳遞body時報錯 :

curl  -H "Content-type:multipart/form-data;boundary=--7db372eb000e2" -d '----7db372eb000e2\r\n Content-Disposition:"form-data";name="file";filename="@xx.jpg";----7db372eb000e2--\r\n' "http://192.168.50.0:8080/res/v2/upload/pic/photo"

 org.jvnet.mimepull.MIMEParsingException: Missing start boundary]

使用網上找的一段java.net.HttpURLConnection (http://blog.csdn.net/skyer_lei/article/details/6106709)代碼  post form也報錯

最終發現 使用-F參數 上傳文件名即可, 不需要寫Content-Disposition 之類信息

curl -S -H "Cookie:uss=AAFxAAgqIx3k9bmQMAAAAAADYnr561" -H "Content-type:multipart/form-data" -F file=@/home/work/mfs/storage/lv/public/photo/37/f8/b7510442817b16138d8883d1b392.jpg "http://192.168.50.0:8080/res/v2/upload/pic/photo"

應該是curl會自動給加上,沒搞懂客戶端模擬的請求為什么總是出錯。

 

找到一個可用的HttpURLConnection test,需要研究下為什么上邊那個有問題

http://lapulande.iteye.com/blog/719581

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM