我想通过针对WSDL文件的Apigee soap消息验证来验证包装在MTOM中的SOAP请求。
当我提交带有标题的请求时
Content-type: multipart/related;type="application/xop+xml";start="http://tempuri.org/0";boundary="uuid:4fa9f99a-7f53-4ac6-84ff-05655e9af89c+id=22";start-info="text/xml“
验证策略似乎只是传递/不触发。我把假信息放进信封,但它不会失败。我看过一篇文章,其中有人提到为了触发SOAP验证策略,头部必须指定Content-type:"application/xml“。如果我这样做了,那么MTOM包装就会导致问题,因为请求体不是纯XML:
例如。MTOM包装器:--uuid:4fa9f99a-7f53-4ac6-84ff-05655e9af89c+id=22 Content-ID: application/xop+xml;charset=utf-8;type="text/xml“Content-Transfer- http://tempuri.org/0:8bit Content-Type: MTOM
所以,长篇大论(对不起)的方式来问这个问题:如果APIGEE需要纯XML,而我有MTOM包装器,我该如何在APIGEE中使用SOAP消息验证策略?
附注,我尝试将SOAP消息/信封本身提取到一个变量(bodyvar)中,并将策略源定义为该变量,但随后APIGEE抱怨该变量不能解析为消息:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<MessageValidation async="false" continueOnError="false" enabled="true" name="WSDL_VALIDATION">
<DisplayName>WSDL_VALIDATION</DisplayName>
<FaultRules/>
<Properties/>
<SOAPMessage />
<Element namespace="http://schemas.xmlsoap.org/soap/envelope/">Body</Element>
<Source>bodyvar</Source>
<ResourceURL>wsdl://FormRequest.wsdl</ResourceURL>
</MessageValidation>运行此命令会出现此错误:{“错误”:{“错误字符串”:“变量环境无法解析为消息”,"detail":{"errorcode":"steps.messagevalidation.NonMessageVariable"}}}
发布于 2015-09-01 23:42:29
是的,只有当content-type是application/xml时,soap消息验证才有效。我猜你需要将content-type设置为上面提到的值,这样你的后端才能理解它。因此,我建议是这样的:-从客户端发送消息时,将其作为application/xml发送-一旦验证了soap消息,在将其发送到目标之前,您可以使用assign message或javascript策略将content-type头设置为您想要的。
希望这种方法适用于您。
https://stackoverflow.com/questions/30534070
复制相似问题