使用HTTP Put方法的JMeter文件上载不起作用

时间:2012-03-12 18:29:16

标签: file-upload jmeter http-put

我们的想法是在JMeter中构建一个使用HTTP PUT方法上传文件的采样器。我正在尝试按照official documentation将整个内容正文指定为没有参数名称的文件。

  • 应该怎么做:文件上传,服务器返回201:created
  • 实际发生的事情:

java.lang.NullPointerException: charsetName at java.lang.String.<init>(Unknown Source) at java.lang.String.<init>(Unknown Source) at org.apache.jmeter.protocol.http.sampler.HTTPHC4Impl.sendPutData(HTTPHC4Impl.java:1067) at org.apache.jmeter.protocol.http.sampler.HTTPHC4Impl.sample(HTTPHC4Impl.java:274) at org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy.sample(HTTPSamplerProxy.java:62) at org.apache.jmeter.protocol.http.sampler.HTTPSamplerBase.sample(HTTPSamplerBase.java:1054) at org.apache.jmeter.protocol.http.sampler.HTTPSamplerBase.sample(HTTPSamplerBase.java:1043) at org.apache.jmeter.threads.JMeterThread.process_sampler(JMeterThread.java:416) at org.apache.jmeter.threads.JMeterThread.run(JMeterThread.java:271) at java.lang.Thread.run(Unknown Source)

这似乎表明JMeter在填写请求正文时遇到问题。我可以通过为请求指定参数来消除此错误,但我希望整个主体成为照片数据。这是我想要完成的CURL系列:

curl -u testuser:testpass "http://localhost:8080/photo" -T photo.jpg -H "content-type:image/jpeg"

我已经尝试将内容编码设置为UTF-8,就像我在一篇文章中看到的那样,但这没有改变。

我在Windows 7 x64上运行Java 1.7.0。在jmeter.log中没有产生任何兴趣,wireshark告诉我JMeter没有发送请求。

有什么想法吗?提前谢谢。

3 个答案:

答案 0 :(得分:1)

原来这是一个错误,JMeter的优秀人员能够很快修复:https://issues.apache.org/bugzilla/show_bug.cgi?id=52897

使用每晚构建解决了我的问题,现在它可能已经进入了发布阶段。

答案 1 :(得分:0)

使用Raw HTTP Request来完成此任务。您可以在“请求数据”中指定标题,也可以指定包含PUT正文的文件。

可能会找到一些详细信息here

答案 2 :(得分:0)

我遇到了图片上传问题,并在https://stackoverflow.com/a/2115944/455363找到了答案。 在这里进行建议的更改后,我不得不重新记录交易并进行编辑,我成功地上传了文件。

希望这有帮助。