文件下载
文件下载的method一般是get。本例中导出excel文件。
下载文件如果要求下载到本地,需要另写脚本。采用jsr223或者beashell PostProcessor都可以。
代码如下:
byte[] result = prev.getResponseData(); //这个是获取到请求返回的数据,getResponseData()返回类型是数组 String file_name = "E:\\jmeter脚本\\apitest\\BaiDu1.xlsx"; //代表存放文件的位置和文件名。文件名称后缀注意,跟下载文件一致 File file = new File(file_name); FileOutputStream out = new FileOutputStream(file); out.write(result); out.close();
注意,导出请求的responsedata如下:
文件上传
请求内容的url中如果含有特殊字符或者动态元素或者字符需要编码,需要将Implementation换成Java的方式。这是因为,默认的HTTPClinet在POST时会自动将特殊字符转义,然而Java在发送过程中却未处理。
顺便说下高级中的Implementation:
- Java:使用的http是使用的JAVA JVM提供的方法,有相关的限制【官方文件写的是1)连接如何重用在请求中没有控制;2)当jmeter释放了一个请求后,在同样的进程中可能不会再使用了;3)只使用于单进程模式;4)HTTPS代理请求有两个bug没存在;5)不支持虚拟主机;6)不支持相关的方法;7)不支持存储证书的请求】。
- HttpClient4.1:使用Apache HttpClient 4.1部件
- 空白:使用HTTP默认请求中的配置或jmeter.properties中jmeter.httpsample中的配置
本例中,formdata如下:
要勾选multipart/form-data,否则request中不会有包含上传文件。Browser-compatibleheaders:浏览器兼容模式,如果使用了Use multipart/form-data for POST,建议勾选此项。
文件地址根据上传文件地址填写。但MIME-Type一般情况下Excel文件的Content-Type为:application/vnd.openxmlformatsofficedocunment,spreadsheetml.sheet;图片Content-Type为: image/jpeg,app包Content-Type为:application/octet-stream。以formdata信息为准。