SoapUI 5.7.0 mockRequest.requestContent 对于 POST 请求为空

问题描述 投票:0回答:3

我正在使用 SOAP UI 5.7.0 来模拟 REST 服务,它工作正常。只是,当我想使用 mockRequest.requestContent 访问

POST
请求的正文时,仅在 第一次调用 中返回正确的内容,但从那时起,它总是返回 空字符串

我尝试了在 OnRequestScript 和 POST 请求自己的 Dispatch script 中进行调用,但两种情况下的行为是相同的。我怀疑请求的流已在其他地方读取,因此不会返回任何更多内容。但我不知道该怎么办。

我想知道读取 POST 请求内容的正确方法是什么。

谢谢你

rest post mocking soapui
3个回答
1
投票

似乎是一个已知问题,请参阅社区论坛中的帖子此处此处

这似乎是 REST 模拟中 PUT 操作的一个老错误。

不幸的是,这是一个错误。对于此问题,SOAP-2344 存在内部缺陷。这适用于 REST 模拟服务的 PUT 和 DELETE 方法。

我对 PATCH 请求也有同样的问题。


0
投票

使用以下技巧获取

PUT
DELETE
请求的正文:

mockRequest.with {
    if (method.toString() == 'PUT' || method.toString() == 'DELETE') {
        InputStreamReader isr = new InputStreamReader(request.getInputStream(), "UTF-8")
        BufferedReader br = new BufferedReader(isr)
        StringBuilder sb = new StringBuilder()
        while ((s=br.readLine())!=null) { 
            sb.append(s)
        }

        def requestBody = new groovy.json.JsonSlurper().parseText(sb.toString())
        log.info "requestBody: " + requestBody
    }
}

我在项目中使用它,但我真的不记得我是如何从哪里获得该片段的。据我所知,我必须更改一些部件才能使其正常工作。尝试一下吧。


0
投票

我也遇到了同样的问题。我运行了 3 个 Soap 模拟服务和 1 个 Rest 模拟服务。 如果我先启动 Soap 模拟,则其余服务的主体将为空。 但是,如果其余服务在 Soap 服务之前开始运行,则其余服务的主体就可以了。

基本上,首先开始运行Rest服务

© www.soinside.com 2019 - 2024. All rights reserved.