HttpAsyncClients与MultipartEntity

最近,在一个项目中,需要写一个性能测试工具,来对HTTP协议的服务端进行压力测试。为了能够提供足够的压力,考虑使用httpclient提供的HttpAsyncClients 来发送异步请求。由于,模拟的部分请求中会有文件上传的操作,因此,在构造POST请求的时候,使用了MultipartEntity ,结果实际运行是发现,程序并不能正确运行,而是抛出异常:

java.lang.UnsupportedOperationException: Multipart form entity does not implement #getContent()


通过查阅资料,才发现,原来在异步模式下,并不能使用MultipartEntity来进行数据传递,如果需要在一步的方式下提交文件,可以考虑采用以下方式:


File file = new File(filePath);
    ByteArrayBody body;
    body = new ByteArrayBody(FileUtils.readFileToByteArray(file), file.getName());

    HttpEntity mEntity = MultipartEntityBuilder.create()
            .setBoundary("-------------" + boundary)
            .addPart("file", body)
            .build();

    ByteArrayOutputStream baoStream = new ByteArrayOutputStream();      
    mEntity.writeTo(baoStream);

    HttpEntity nByteEntity = new NByteArrayEntity(baoStream.toByteArray(), ContentType.MULTIPART_FORM_DATA);
    httppost.setEntity(nByteEntity );
用这种方式构建NByteArrayEntity 能够实现异步上传文件。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值