Soapui属性转移请求标题

时间:2015-03-02 17:30:35

标签: web-services xpath soapui

我想在此soap ws标头中设置令牌的值

<soapenv:Enveloppe ...
<soapenv:Header>
    <web:token>123456 </web:token>

从名为test的FROM步骤获取响应中的idSession

    <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
        <soap:Body>
             <ns1:authentification xmlns:ns1="http://ws.demowebservices.com/">
                <bloc1>
                    <bloc2>
                          <idSession>e1c64cd9-b933-4f56-ae1f-0f7d7f23942b</idSession>
                    </bloc2>

我试图介入web:令牌标记

   ${test#Response#//ns1:authentification/bloc1/bloc2/idSession}

但它不起作用

我该怎么办呢?

1 个答案:

答案 0 :(得分:2)

我不确定这是否是您尝试实现的目标,但是如果您有一个名为SOAP Test step的{​​{1}}并且您想要使用{Test Request的值在另一个<soapenv:Header><web:token></soapenv:Header>中,您可以使用以下语法在第二个SOAP Test step请求中引用此值:

SOAP Test step

语法<soapenv:Enveloppe ... <soapenv:Header> <web:token>${Test Request#Request#//soapenv:Header/web:token}</web:token> 包含三个部分,测试步骤的名称,后跟属性(可以是${Test Request#Request#//soapenv:Header/web:token}#Request),最后是#Response到得到值xpath

<强>更新:

正如您所说的那样,//soapenv:Header/web:token两个SOAP Test Request,第一个被称为test,并且有response

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
   <soap:Body>
      <ns1:authentification xmlns:ns1="http://ws.demowebservices.com/">
         <bloc1>
            <bloc2>
               <idSession>e1c64cd9-b933-4f56-ae1f-0f7d7f23942b</idSession>
            </bloc2>
         </bloc1>
      </ns1:authentification>
   </soap:Body>
</soap:Envelope>

第二个以例如test 2命名(不要小心,因为第二个名字不会影响您的目的)并且遵循request

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
   <soapenv:Header>
    <web:token>${test#Response#//ns1:authentification/bloc1/bloc2/idSession}</web:token>
    </soapenv:Header>
   <soapenv:Body>
      ...
   </soapenv:Body>
</soapenv:Envelope>

使用${test#Response#//ns1:authentification/bloc1/bloc2/idSession},您正确引用idSession响应的test值。发送http log时,请查看test 2标签,如下图所示:

enter image description here

希望这有帮助,