我尝试通过JSR223 Sampler
使用以下脚本上传请求正文中的图像文件。由于我的应用程序不支持多部分实体,以下脚本失败。有什么方法可以解决这个问题吗?
import org.apache.http.HttpHeaders
import org.apache.http.client.methods.HttpPost
import org.apache.http.entity.ContentType
import org.apache.http.entity.mime.HttpMultipartMode
import org.apache.http.entity.mime.MultipartEntityBuilder
import org.apache.http.impl.client.HttpClients
def imageFileName = "C:\\Users\\IMAGES\\IMG00001.dcm"
def urlRequest = 'https://' + ${BASE_URL_1} + '/api/v3/storage/namespace/7c762733-009f-4527-81ea-571d1cf6e9d2/image?sid=' + vars.get('SIDVALUE') + '&study_uid=1.2.300.0.7230010.3.1.2.2595064201.8112.1216202112026121&image_uid=1.2.840.113704.7.1.0.1356918323635126.1521373008.110'
def postRequest = new HttpPost(urlRequest);
def file = new File(imageFileName);
def builder = MultipartEntityBuilder.create();
builder.setMode(HttpMultipartMode.BROWSER_COMPATIBLE);
builder.addBinaryBody("file", file, ContentType.DEFAULT_BINARY, imageFileName);
def entity = builder.build();
postRequest.setEntity(entity);
def header = new BasicHeader(HttpHeaders.CONTENT_TYPE, "application/dicom");
def headers = Arrays.asList(header)
def client = HttpClients.custom().setDefaultHeaders(headers).build()
def response = client.execute(postRequest);
1条答案
按热度按时间z0qdvdin1#
你想在这里“解决”什么?
如果您的应用程序不支持multipart file uploads,那么您需要以其他方式传递文件,我们无法建议您具体如何传递,因为我们对您的应用程序细节一无所知。
如果您可以使用浏览器或其他应用程序执行文件上传,则可以使用JMeter的HTTP(S) Test Script Recorder或JMeter Chrome Extension进行记录
如果您无法和/或只想从StackOverflow复制和粘贴代码,而不了解它的作用,您可以尝试使用不同的HttpEntity实现,例如FileEntity似乎是一个很好的候选对象
您可以复制和粘贴的示例代码位于Apache HttpComponents文档的Fundamentals一章中: