BizTalk和SalesForce集成:查询或检索函数返回未知类型

时间:2014-06-18 07:17:46

标签: xml salesforce biztalk biztalk-2009

我在内部集成BizTalk Server和SFDC(Salesforce CRM on Demand)。我使用BizTalk 2009和WCF自定义端口。我已导入企业WSDL并成功使用它在SFDC中创建帐户。当我尝试使用检索(或查询)函数来获取用户详细信息时,一切都运行良好,除非我尝试使用"使用"回复消息。

请求:

<ns0:retrieve xmlns:ns1="urn:sobject.enterprise.soap.sforce.com" xmlns:ns0="urn:enterprise.soap.sforce.com">
    <ns0:fieldList>Name, Email</ns0:fieldList>
    <ns0:sObjectType>User</ns0:sObjectType>
    <ns0:ids>005900000023xmcAAA</ns0:ids>
</ns0:retrieve>

接收管道是标准的XMLReceive。

回复讯息:

<retrieveResponse xmlns="urn:enterprise.soap.sforce.com">
    <result xsi:type="sf:User" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
        <sf:Id xmlns:sf="urn:sobject.enterprise.soap.sforce.com">005900000023xmcAAA</sf:Id>
        <sf:Email xmlns:sf="urn:sobject.enterprise.soap.sforce.com">jredwood@charteredaccountants.com.au</sf:Email>
        <sf:Name xmlns:sf="urn:sobject.enterprise.soap.sforce.com">Julian Redwood</sf:Name>
    </result>
</retrieveResponse>

错误详细信息:&#34;无法读取管道生成的流。  细节:价值&#39; sf:用户&#39;根据其架构类型&#39; http://www.w3.org/2001/XMLSchema:QName&#39; - &#39; sf&#39;是一个未声明的命名空间。 &#34;

1 个答案:

答案 0 :(得分:1)

是的,这种反应相当混乱。

它声明了根xmlns =“urn:enterprise.soap.sforce.com”的默认名称空间 它没有在根处声明sf名称空间前缀,例如(XMLNS:SF = “瓮:sobject.enterprise.soap.sforce.com”)。 然后为用户将其作为xsi:type =“sf:User”,然后它没有为结果节点定义sf前缀。

它需要在根节点或结果节点级别声明它。

选项1)如果您是ESB Toolkit,您可以尝试使用ESB Add Namespace管道组件并添加NamspacePrefix = sf和NamspaceBase = urn:enterprise.soap.sforce.com

选项2)将其提升为Salesforce的问题,因为它无效。

或两者兼而有之。