2012-07-11 172 views
5

我想找到一個工具,可以讓我測試多部分/表單數據POST請求並調整請求。具體來說,我想測試的內容類型頭中的分號的缺席/存在:如何測試多部分/表單數據POST請求

multipart/form-data; boundary=140f0f40c9f411e19b230800200c9a66 

我們有個客戶,並不發送分號和我們的新的servlet(使用Apache的百科全書FileUpload)無法解析上傳的文件。舊版本的servlet使用不同的庫方法來接受/解析請求,並且它可以解析文件。在我可以通過包含分號來證明請求會成功之前,客戶端應用程序的所有者不希望對其進行任何更改。

我一直在使用cURL對servlet運行我的測試,但是我無法調整它生成的排除分號的請求。我曾嘗試海報插件的Firefox和提琴手生成測試POST請求,但它們會導致這個錯誤:

org.apache.commons.fileupload.FileUploadException: Stream ended unexpectedly 

有沒有人找到了一種方法成功地測試與上傳的multipart/form-data的POST請求文件?

回答

1

可以使用curl測試這些庫,這裏是使用的multipart/form-data發佈一個例子:https://stackoverflow.com/a/10765244/72176

一兩件事,我喜歡像嫋嫋的命令行工具可以很容易地重複(在bash ,輸入&),然後可以保存測試以備後用。

編輯:絕對可以發送您要測試的自定義標題。關鍵是將curl的原始命令用於爲請求格式化的便利方法。使用-H傳入原始頭文件,並使用--data-binary從文件傳入文本而不更改行尾(對於多部分/表格數據非常重要,其中必須具有CRLF行結尾)。這裏有一個例子:

curl -X POST -H "Content-Type: multipart/form-data; boundary=----------------------------4ebf00fbcf09" --data-binary @test.txt http://localhost:3000/test 
如果它不使用中間文件更方便的

,你可以寫上一行像這樣:

curl -X POST -H "Content-Type: multipart/form-data; boundary=----------------------------4ebf00fbcf09" -d $'------------------------------4ebf00fbcf09\r\nContent-Disposition: form-data; name="example"\r\n\r\ntest\r\n------------------------------4ebf00fbcf09--\r\n' http://localhost:3000/test 

這兩個例子包括分號,但你可以刪除它根據需要。

+0

我是/使用curl,但正如我的問題所解釋的,我無法使用它來調整請求標頭數據。 – sdoca 2013-06-05 16:58:34

+0

我已經更新了我的答案,我非常肯定你可以做到這一點。避免使用便利的表單方法,並直接指定標題。 – 2013-06-06 04:08:48

+0

謝謝。我不再需要進行調整,但很高興知道如果需要再次出現,可能還有其他選擇。 – sdoca 2013-06-06 16:14:07

相關問題