WSO2 ESB : Unexpected Character Error when using Salesforce Connector

标签 wso2 wso2esb wso2carbon sfdc

尝试遵循 WSO2 时 directions要更新 Salesforce 记录,我收到以下错误。

Saleforce adaptor - error injecting sObjects to payload : org.apache.axiom.om.OMException: com.ctc.wstx.exc.WstxUnexpectedCharException: Unexpected character '{' (code 123) in prolog; expected '<'


<?xml version="1.0" encoding="UTF-8"?>
<proxy
    xmlns="http://ws.apache.org/ns/synapse"
    xmlns:sfdc="sfdc" name="SalesforceUpdateTest" startOnLoad="true" statistics="enable" trace="enable" transports="http,https">
    <target>
        <inSequence>
            <sequence key="conf:/SalesforceLoginInfo"/>
            <payloadFactory>
                <format>
                    <sfdc:sObjects
                        xmlns:sfdc="sfdc" type="Account">
                        <sfdc:sObject>
                            <sfdc:Id>TestId1</sfdc:Id>
                            <sfdc:ValueToChange>Yes</sfdc:ValueToChange>
                        </sfdc:sObject>
                    </sfdc:sObjects>
                </format>
                <args/>
            </payloadFactory>
            <salesforce.update>
                <allOrNone>0</allOrNone>
                <allowFieldTruncate>0</allowFieldTruncate>
                <sobjects
                    xmlns:sfdc="sfdc">{//sfdc:sObjects}
                </sobjects>
            </salesforce.update>
        </inSequence>
        <outSequence>
            <send/>
        </outSequence>
    </target>
</proxy>

我正在使用 WSO2 EI 6.1.0 和 salesforce 连接器 2.0.1。 Salesforce ID TestId1 和 ValueToChange 字段一样存在。我的 SalesforceLoginInfo 是正确的(我可以进行 Salesforce 查询,但不能进行更新)。

试图解决这个问题我看到了这个 very similar问题。但我已将这些行添加到 axis2.xml 按照解决方案,重启,问题依旧。
<messageBuilder contentType="application/json" class="org.wso2.carbon.integrator.core.json.JsonStreamBuilder"/>
<messageBuilder contentType="text/javascript" class="org.wso2.carbon.integrator.core.json.JsonStreamBuilder"/>

<messageFormatter contentType="application/json" class="org.wso2.carbon.integrator.core.json.JsonStreamFormatter"/>
<messageFormatter contentType="text/javascript" class="org.wso2.carbon.integrator.core.json.JsonStreamFormatter"/>

有谁知道如何解决这个问题?我觉得我只是在学习教程(我的代码几乎完全是给定的 wso2 salesforce 示例),但问题仍然存在。

更新:为了减少对 SalesforceLoginInfo 调用的混淆,我删除了它并将 salesforce.init 放在代码中。错误还是一样。
<?xml version="1.0" encoding="UTF-8"?>
<proxy
    xmlns="http://ws.apache.org/ns/synapse"
    xmlns:sfdc="sfdc" name="SalesforceUpdateTest" startOnLoad="true" statistics="enable" trace="enable" transports="http,https">
    <target>
        <inSequence>
            <salesforce.init>
                <username>developer@mycompany.com</username>
                <password>mypasswordandmytoken</password>
                <loginUrl>https://test.salesforce.com/services/Soap/u/27.0</loginUrl>
                <blocking>true</blocking>
            </salesforce.init>

            <payloadFactory>
                <format>
                    <sfdc:sObjects
                        xmlns:sfdc="sfdc" type="Account">
                        <sfdc:sObject>
                            <sfdc:Id>TestId1</sfdc:Id>
                            <sfdc:ValueToChange>Yes</sfdc:ValueToChange>
                        </sfdc:sObject>
                    </sfdc:sObjects>
                </format>
                <args/>
            </payloadFactory>
            <salesforce.update>
                <allOrNone>0</allOrNone>
                <allowFieldTruncate>0</allowFieldTruncate>
                <sobjects
                    xmlns:sfdc="sfdc">{//sfdc:sObjects}
                </sobjects>
            </salesforce.update>
        </inSequence>
        <outSequence>
            <send/>
        </outSequence>
    </target>
</proxy>

最佳答案

能够使用 WSO2 EI 6.1.0 和 salesforce connector 2.0.1 复制以下行为。

Saleforce adaptor - error injecting sObjects to payload : org.apache.axiom.om.OMException: com.ctc.wstx.exc.WstxUnexpectedCharException: Unexpected character '{' (code 123) in prolog; expected '<'



找到用于修复它的以下代理序列。解决方法是将有效负载加载到属性中并将其传递给 Salesforce 操作 <salesforce.update>通过 Synapse XPath 变量 $ctx
          <payloadFactory media-type="xml">
            <format>
               <sfdc:sObjects xmlns:sfdc="sfdc" type="Account">
                  <sfdc:sObject>
                     <sfdc:Id>0011I001102zk24PZA</sfdc:Id>
                     <sfdc:Description>Account1</sfdc:Description>
                  </sfdc:sObject>
               </sfdc:sObjects>
            </format>
            <args/>
         </payloadFactory>
         <log level="full"/>
         <log>
            <property xmlns:sfdc="sfdc" expression="//sfdc:sObjects" name="n****n"/>
         </log>
         <property xmlns:sfdc="sfdc"
                   expression="//sfdc:sObjects"
                   name="sobjectPayload"
                   scope="default"
                   type="OM"/>
         <log>
            <property expression="get-property('sobjectPayload')"
                      name="fromProp****"/>
         </log>
         <salesforce.update>
            <allOrNone>0</allOrNone>
            <allowFieldTruncate>1</allowFieldTruncate>
            <sobjects>{$ctx:sobjectPayload}</sobjects>
         </salesforce.update>

Salesforce 记录已更新,在本例中为客户对象记录的描述属性。

也不需要添加新的 messageBuildermessageFormatteraxis2.xmlmessageType is : text/xml在 Salesforce 连接器模板中,默认情况下包含在 Axis2 配置中。

关于WSO2 ESB : Unexpected Character Error when using Salesforce Connector,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45578618/

相关文章:

wso2 - 将参数添加到端点 url wso2 esb

wso2 - 选择简单的 Apache Synapse 与 WSO2 的标准

wso2 - 如何浏览嵌入式 H2 数据库中的新增数据

Ubuntu Server 12.04 64 位上的 WSO2 Carbon 错误

WSO2-如何从Javascript中介程序中登录

mysql - WSO2 EMM - MySQL 配置不起作用

wso2 - 如何将 JWT 与 Ballerina 一起使用

javascript - wso2 EMM iOS 服务器

namespaces - wso2 esb bam 服务器配置文件命名空间

java - ESB 服务客户端创建