qq_40247526 2023-12-25 08:31 采纳率: 0%
浏览 18

Jmeter beanshell如何获取mutipart/form-data请求的原始请求体内容

Jmeter beanshell如何获取mutipart/form-data请求的原始请求体内容
有个需求,需要在beanshell前置处理器获取mutipart/form-data请求的原始请求体内容,做md5生成签名。
jmeter请求配置如下:

img

img

希望获取到的请求体内容如下:

--DCjpd-SI9UwHGSqTe-L_r-eq7eNlF4DQcyI10i
Content-Disposition: form-data; name="queryData"
Content-Type: mutipart/form-data; charset=UTF-8
Content-Transfer-Encoding: 8bit

{"test":"123"}
--DCjpd-SI9UwHGSqTe-L_r-eq7eNlF4DQcyI10i
Content-Disposition: form-data; name="file"; filename="test.txt"
Content-Type: text/plain
Content-Transfer-Encoding: binary

123456
789123
456789
--DCjpd-SI9UwHGSqTe-L_r-eq7eNlF4DQcyI10i--
  • 写回答

1条回答 默认 最新

  • 她嫌我菜呜呜呜 2023-12-25 09:22
    关注
    
    你可以使用JMeter中的`prev`对象来获取请求的原始内容,然后对其进行处理。以下是一个示例代码,用于在Beanshell前置处理器中获取multipart/form-data请求的原始请求体内容并进行MD5签名生成:
    
    ```java
    import org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy;
    import org.apache.jmeter.samplers.SampleResult;
    
    SampleResult prevResult = ctx.getPreviousResult();
    if (prevResult instanceof HTTPSamplerProxy) {
        HTTPSamplerProxy sampler = (HTTPSamplerProxy) prevResult.getSampler();
        String requestData = new String(sampler.getArguments().getArgument(0).getValue());
    
        // 在这里对requestData进行MD5签名处理
        // ...
    
        log.info("原始请求体内容:" + requestData);
    }
    

    这段代码首先获取了前一次HTTP请求的SampleResult对象,然后判断其类型是否为HTTPSamplerProxy,如果是,则可以通过getArguments()方法获取请求参数列表,然后进一步获取原始请求体内容。在获取到原始请求体内容后,你可以在代码中对其进行MD5签名处理。

    请注意,Beanshell目前已经被认为是不安全的,并且不建议在生产环境中使用。如果可能的话,建议升级到JMeter 3.1或更高版本并使用JSR223元素来替代Beanshell,例如使用Groovy语言来编写处理逻辑。

    ```

    评论
    编辑
    预览

    报告相同问题?

    手机看
    程序员都在用的中文IT技术交流社区

    程序员都在用的中文IT技术交流社区

    专业的中文 IT 技术社区,与千万技术人共成长

    专业的中文 IT 技术社区,与千万技术人共成长

    关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

    关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

    客服 返回
    顶部