6

我正在尝试找到一种工具,可以让我测试多部分/表单数据 POST 请求并调整请求。具体来说,我想测试内容类型标题中分号的缺失/存在:

multipart/form-data; boundary=140f0f40c9f411e19b230800200c9a66

我们有一个不发送分号的客户端,而我们的新 servlet(使用 Apache Commons FileUpload)无法解析上传的文件。旧版本的 servlet 使用不同的库方法来接受/解析请求,它可以解析文件。在我可以通过包含分号来证明请求将成功之前,客户端应用程序的所有者不想对其进行任何更改。

我一直在使用 cURL 对 servlet 运行测试,但我无法调整它生成的请求以排除分号。我已经尝试了 Firefox 和 Fiddler 的海报插件来生成测试 POST 请求,但它们导致了这个错误:

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

有没有人找到一种方法来成功测试上传文件的多部分/表单数据 POST 请求?

4

1 回答 1

1

您可以使用curl这些库来测试这些库,这是一个使用 multipart/form-data POST 的示例:https ://stackoverflow.com/a/10765244/72176

我喜欢 curl 这样的命令行工具的一件事是它很容易重复(在 bash 中,up & enter),并且您可以保存测试以供以后使用。

编辑:绝对可以发送您要测试的自定义标头。关键是使用 curl 的原始命令而不是为您格式化请求的便捷方法。用于-H传入原始标题,并用于--data-binary从文件中传入正文而不更改行尾(对于必须具有 CRLF 行尾的 multipart/form-data 非常重要)。这是一个例子:

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

这 2 个示例包括分号,但您可以根据需要将其删除。

于 2013-06-05T09:53:13.980 回答