6

multipart/form-data POST リクエストをテストし、リクエストを微調整できるツールを探しています。具体的には、コンテンツ タイプ ヘッダーにセミコロンがないかどうかをテストします。

multipart/form-data; boundary=140f0f40c9f411e19b230800200c9a66

セミコロンを送信しないクライアントがあり、新しいサーブレット (Apache Commons FileUpload を使用) はアップロードされたファイルを解析できません。サーブレットの古いバージョンは、リクエストの受け入れ/解析に別のライブラリ メソッドを使用しており、ファイルを解析できます。セミコロンを含めて要求が成功することを証明できるまで、クライアント アプリの所有者はそれを変更したくありません。

cURL を使用してサーブレットに対してテストを実行していますが、セミコロンを除外するために生成される要求を微調整することはできません。Firefox および Fiddler 用のポスター アドオンを使用してテスト POST 要求を生成しようとしましたが、次のエラーが発生します。

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

アップロードされたファイルで multipart/form-data POST リクエストを正常にテストする方法を見つけた人はいますか?

4

1 に答える 1

1

これらのライブラリのテストに使用できますcurl。multipart/form-data POST を使用した例を次に示します: https://stackoverflow.com/a/10765244/72176

curl のようなコマンド ライン ツールで私が気に入っていることの 1 つは、簡単に繰り返すことができ (bash で up & enter)、テストを保存して後で使用できることです。

編集: テストしたいカスタム ヘッダーを送信することは間違いなく可能です。重要なのは、リクエストをフォーマットする便利なメソッドではなく、curl の raw コマンドを使用することです。-H生のヘッダーを渡すために使用し、行末を変更せずにファイルから本文を渡すために使用します ( CRLF 行末--data-binaryが必要な multipart/form-data にとって非常に重要です)。次に例を示します。

curl -X POST -H "Content-Type: multipart/form-data; boundary=----------------------------4ebf00fbcf09" --data-binary @test.txt http://localhost:3000/test

中間ファイルを使用しない方が便利な場合は、次のように 1 行で記述できます。

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

これら 2 つの例にはセミコロンが含まれていますが、必要に応じて削除できます。

于 2013-06-05T09:53:13.980 に答える