参考https://blog.youkuaiyun.com/u010390063/article/details/78329373
https://www.cnblogs.com/zichuan/p/10120316.html
https://blog.youkuaiyun.com/qq_41117947/article/details/79964346
https://www.jianshu.com/p/338b0e89b0cd
先抓个包,把请求、参数、header、cookie都对应起来,着重注意file upload和header里的content-type(不在header头信息里添加,勾选use multipart/form-data for post即可,但也要根据抓包的结果对比)
1、参数名称要与抓包的name保持一致
2、MIME类型要与以上抓包的类型一致
3、是本地的路径
4、跟随重定向:勾选后,与自动重定向不同的是,会记录重定向过程中的所有请求响应,在查看结果树时可以看到服务器返回的内容,并对响应的内容做关联
第一个是自动重定向:勾选后,当发送HTTP请求后得到的响应是302/301时,自动重定向到新的页面
5、Use KeepAlive:勾选后,和目标服务器之间使用Keep-Alive方式进行HTTP通信
6、Browser-compatible headers:勾选后,当使用multipart/form-data时,会只发送Content-Disposition标头(当发送HTTP POST请求时,使用Use multipart/form-data方法发送,可用它做文件上传,这个属性是与方法POST绑定的。这里需要勾选此项。)
7、着重看一下勾选Browser-compatible headers(浏览器兼容模式)的效果:
未勾选时显示 Content-Type 和Content-Transfer-Encoding
勾选时不显示Content-Type 和Content-Transfer-Encoding
其中第二部分显示的Content-Type:application/zip显示的不是头信息里的,显示的是Body体里的MIME-type
发现在头信息里添加了Content-Type:multipart/form-data; 就会导致上传文件失败,勾选Browser-compatible headers不知道是冲突还是怎么了,感觉忽略不起作用。最后的解决方法就是在头信息里删除该项,勾选Use multipart/form-data for POST即可。
重点:
按以上方式维护HTTP请求,执行脚本,如果报错且提示“导入的数据为空”,那么需要把Implementation选择为“HttpClient4”或者“Java”。选择哪一个需要用Badboy录制一下后导出成.jmx文件,再用jmeter打开查看。
Implementation中:
Java:使用的http是使用的JAVA JVM提供的方法,有相关的限制:1)连接如何重用在请求中没有控制;2)当jmeter释放了一个请求后,在同样的进程中可能不会再使用了;3)只使用于单进程模式;4)HTTPS代理请求有两个bug没存在;5)不支持虚拟主机;6)不支持相关的方法;7)不支持存储证书的请求。
HttpClient4:使用Apache HttpClient 4.1部件。
空白:使用HTTP默认请求中的配置或jmeter.properties中jmeter.httpsample中的配置
实例: