Scala Gatling转Java时无法获取Pebble渲染请求体问题
问题解决方法
你的Java代码错误在于直接调用PebbleFileBody的toString()方法,这只会返回对象的默认字符串表示(比如类名和哈希值),而不是渲染后的请求体内容。在Scala代码中,你通过bodyExpr(session)执行了表达式的渲染逻辑,对应到Java里需要调用Expression的apply方法。
修正后的Java代码如下:
ChainBuilder create = repeat(1).on(feed(DataFeeder.feed) .exec(http("Requests ...") .post(url).body(StringBody(session -> { PebbleFileBody bodyExpr = PebbleFileBody("body.json"); String bodyStr = bodyExpr.apply(session).right().get(); return Utils.encrypt(bodyStr); })).asJson().check(status().is(200))));
关键修正点:
- 调用
bodyExpr.apply(session)来执行Pebble模板的渲染,得到io.gatling.commons.validation.Validation<String>类型的结果 - 通过
.right().get()获取渲染成功后的字符串(如果需要处理渲染失败的情况,可以添加异常处理逻辑)
这样就能和Scala版本一样,先完成Pebble模板的渲染,再对渲染后的内容进行加密处理。
内容的提问来源于stack exchange,提问作者Akhil
相关产品推荐
相关产品推荐

