0

在这种情况下,我想先获取一个 accessTokenTest,然后我将使用这个 accessTokenTest 创建一个 SOAP 请求。但是我在将这个 accessTokenTest 添加到 XML 元素时遇到了问题。除了将此值填充到 XML 之外,一切都很好。

<set-variable name="accessTokenTest" value="@(((IResponse)context.Variables["ABCOauth"]).Body.As<JObject>()["access_token"].ToString())" />
<set-body template="liquid">
			<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns="http://servicxxxx>
				<soap:Body>
					<GetUsersxxx>
						<userIds>
{% for item in body.getUserxxxx.userIds -%}
<string>{{item}}</string>
{% endfor -%}
</userIds>
						<credentials>
							<Client>{{body.getUsersByUserId.credentials.client}}</Client>
							<AccessToken>(string)context.Variables.GetValueOrDefault("accessTokenTest")</AccessToken>
						</credentials>
					</GetUsersxxxx>
				</soap:Body>
			</soap:Envelope>
</set-body>

在此处输入图像描述

4

1 回答 1

0

set-body策略中使用液体模板时,访问context对象的语法不同,如文档中所示,类似于您用于客户端值的语法。

在您的情况下,该政策必须看起来像这样

<set-variable name="accessTokenTest" value="@(((IResponse)context.Variables["ABCOauth"]).Body.As<JObject>()["access_token"].ToString())" />
<set-body template="liquid">
  <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns="http://servicxxxx>
    <soap:Body>
      <GetUsersxxx>
        <userIds>
{% for item in body.getUserxxxx.userIds -%}
          <string>{{item}}</string>
{% endfor -%}
        </userIds>
        <credentials>
          <Client>{{body.getUsersByUserId.credentials.client}}</Client>
          <AccessToken>{{context.Variables["accessTokenTest"]}}</AccessToken>
        </credentials>
      </GetUsersxxxx>
    </soap:Body>
  </soap:Envelope>
</set-body>
于 2020-02-17T12:10:55.097 回答