我正在尝试使用 BizTak WCF-WebHttp 适配器使用变量映射发送到 Service Desk Plus CMDB API。
尝试使用浏览器时,它工作正常。Service Desk Plus CMDB API 需要一个类似的 URI(为了便于阅读而严格缩短):
http://host.com/api/cmdb/ci?OPERATION_NAME=read&TECHNICIAN_KEY=Mykey&format=XML&INPUT_DATA=<?xml version='1.0'?>
<API>
<name>email@host.com</name>
</API>
我使用了 URI http://host.com/api/cmdb/ci和 URL 映射。
<BtsHttpUrlMapping>
<Operation Url="?OPERATION_NAME=read&TECHNICIAN_KEY=MyKey&format=XML&INPUT_DATA=<?xml version='1.0'?>
<API>
<name>email@host.com</name>
</API>"/>
</BtsHttpUrlMapping>
这很好用,但我需要一种更动态的方法。我尝试使用变量映射,所以我用变量替换了硬编码的电子邮件地址。
<BtsHttpUrlMapping>
<Operation Url="?OPERATION_NAME=read&TECHNICIAN_KEY=MyKey&format=XML&INPUT_DATA=<?xml version='1.0'?>
<API>
<name>{email}</name>
</API>"/>
</BtsHttpUrlMapping>
尝试使用变量保存 URL 映射时出现错误。
WCF-WebHttp 传输属性
保存属性时出错。(System.InvalidOperationException) UriTemplate
?OPERATION_NAME=read&TECHNICIAN_KEY=MyKey&format=XML&INPUT_DATA=<?xml version='1.0'?><API><name>{email}</name></API>
无效;当 value 不能是复合段时,查询字符串的每个部分都必须采用“name=value”的形式。有关更多详细信息,请参阅 UriTemplate 的文档。
如果我尝试使用不在转义 XML 字符串中的变量,例如使用键,那么它可以正常工作。
<BtsHttpUrlMapping>
<Operation Url="?OPERATION_NAME=read&TECHNICIAN_KEY={key}&format=XML&INPUT_DATA=<?xml version='1.0'?>
<API>
<value>email@host.com</value>
</API>"/>
</BtsHttpUrlMapping>
我的意图是能够在转义的 XML 字符串中使用变量。如果这是不可能的;我将不得不转向动态适配器并在编排中创建 URI 和 URL 映射。