3

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

  • 应该发生什么:文件被上传,服务器返回 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 没有发送请求。

有任何想法吗?提前致谢。

4

3 回答 3

1

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

使用 nightly build 解决了我的问题,现在它可能已经发布了。

于 2012-08-08T05:57:26.033 回答
0

使用原始 HTTP 请求来完成此操作。您可以在请求数据中指定标头,也可以指定包含 PUT 正文的文件以方便使用。

一些细节可以在这里找到

于 2012-03-13T07:59:02.517 回答
0

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

希望这可以帮助。

于 2012-08-07T23:18:08.910 回答