如何在JMeter中通过单个POST请求同时发送application/json与application/pdf?
发送包含JSON Model和PDF文件的Multipart POST请求
嘿,我帮你把需要的POST请求整理得更清晰,还补充了关键说明和代码实现示例,方便你直接用:
首先,这是一个标准的multipart/form-data类型请求,用来同时上传JSON格式的model数据和PDF文件,完整请求体如下:
POST /你的接口地址 HTTP/1.1 Host: 你的API域名 Content-Type: multipart/form-data; boundary=----WebKitFormBoundarytNDCqGrEFjFTUxGJ ------WebKitFormBoundarytNDCqGrEFjFTUxGJ Content-Disposition: form-data; name="model"; filename="blob" Content-Type: application/json { // 这里替换成你的实际JSON model内容,比如: "chartType": "LineChart", "timestamp": 1523101530916, "dataPoints": [10, 20, 35, 28] } ------WebKitFormBoundarytNDCqGrEFjFTUxGJ Content-Disposition: form-data; name="file"; filename="LineChart1523101530916.pdf" Content-Type: application/pdf // 这里是PDF文件的二进制字节流(实际发送请求时直接传入文件内容即可) ------WebKitFormBoundarytNDCqGrEFjFTUxGJ--
几个要注意的点:
- 请求头里的
Content-Type必须包含和请求体一致的boundary值,就是开头那串----WebKitFormBoundarytNDCqGrEFjFTUxGJ model字段的filename="blob"是合理的,后端会根据application/json的类型来解析这部分内容为JSON对象- PDF部分一定要传入实际的文件二进制内容,别留着注释哦
- 最后一个分隔符后面要加
--,告诉服务器请求体结束了
如果用Python的requests库来实现这个请求,代码可以这么写:
import requests import json # 替换成你的实际接口地址 api_url = "https://your-api-domain.com/target-endpoint" # 你的JSON model数据 model_json = { "chartType": "LineChart", "timestamp": 1523101530916, "dataPoints": [10, 20, 35, 28] } # 构造要上传的文件组 upload_files = { "model": ("blob", json.dumps(model_json), "application/json"), "file": ("LineChart1523101530916.pdf", open("./LineChart1523101530916.pdf", "rb"), "application/pdf") } # 发送请求 response = requests.post(api_url, files=upload_files) # 打印响应结果 print(f"请求状态码: {response.status_code}") print(f"响应内容: {response.text}")
这样就能轻松完成同时上传model和PDF文件的需求啦~
内容的提问来源于stack exchange,提问作者Krishna Sagar
相关产品推荐
相关产品推荐

