我必须测试一些以XML格式响应的Web服务,并且我想解析从第一个请求到第二个请求调用的响应。

例如:我发出了第一个请求

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ser="http://services.com">
   <soapenv:Header/>
   <soapenv:Body>
      <ser:exec>
         <!--Optional:-->
         <ser:sName>55</ser:sName>
         <!--Zero or more repetitions:-->
         <ser:sArguments>{{Param1}}</ser:sArguments>
         <ser:sArguments>XX</ser:sArguments>
         <ser:sArguments>POSTMAN</ser:sArguments>
         <ser:sArguments></ser:sArguments>
         </ser:exec>
   </soapenv:Body>
</soapenv:Envelope>

回应的:
<soap:Body>
        <ns2:execResponse xmlns:ns4="http://address.com" xmlns:ns3="http://services" xmlns:ns2="http://services.com">
            <ns2:execReturn>6666&#xd;
</ns2:execReturn>
        </ns2:execResponse>
    </soap:Body>
</soap:Envelope>

我想将6666放入GlobalVariable或EnvironmentVariable中,以用于第二个请求调用。

我现在尝试一下:

首先,我在“管理环境-GLOBALS”中设置参数(NumberReq),然后在“测试”中输入以下代码:
var jsonData = xml2Json(responseBody);
postman.setEnvironmentVariable("NumberReq", jsonData.execReturn);

在下一个请求中,我尝试使用NumberReq参数,如下所示:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ser="http://services.com">
       <soapenv:Header/>
       <soapenv:Body>
          <ser:exec>
             <!--Optional:-->
             <ser:sName>99</ser:sName>
             <!--Zero or more repetitions:-->
             <ser:sArguments>00</ser:sArguments>
             <ser:sArguments>{{NumberReq}}</ser:sArguments>
             <ser:sArguments>{{Param2}}</ser:sArguments>
             <ser:sArguments>{{Param3}}</ser:sArguments>
             </ser:exec>
       </soapenv:Body>
    </soapenv:Envelope>

我有一个包含这两个Web服务的集合,我从Postman Runner运行,但是无法解析响应。

谁能帮我?
谢谢! :)

最佳答案

诀窍是如何将XML转换为JSON,以及如何访问JSON数据。

您解析的JSON具有以下结构:
xml - 解析XML对Postman中另一个请求的响应-LMLPHP
因此,为了从中获取值,您应该像这样逐步获取元素:

jsonData["xs:schema"]["xs:element"][0]["$"]["name"]

因此,要设置变量,您需要执行以下操作:
postman.setEnvironmentVariable("NumberReq", jsonData["soap:Body"]["ns2:execResponse"]["ns2:execReturn"]);

希望上面的示例正是您需要的代码。如果不是,请修改解析后的JSON的结构,并更改为所需元素的方式。

也许您也可以使用“点”结构来完成此操作,例如jsonData.Body.execResponse.execReturn

07-26 06:27