【发布时间】:2017-08-08 21:55:59
【问题描述】:
当尝试按照 WSO2 directions 更新销售人员记录时,我收到以下错误。
Saleforce 适配器 - 向有效负载注入 sObject 时出错:org.apache.axiom.om.OMException: com.ctc.wstx.exc.WstxUnexpectedCharException: 序言中出现意外字符“{”(代码 123);预期'
<?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>
【问题讨论】:
-
嗨.. 使用的是哪个版本的 esb?
-
更新了问题。 wso2ei-6.1.0 是我为 esb 安装的。 Salesforce 连接器是 salesforce-connector-2.0.1
-
嗨.. 如何在不使用凭据的情况下调用端点?你错过了这个docs.wso2.com/display/ESBCONNECTORS/…
-
我将凭证与这一行
一起使用。我知道这行得通,因为如果我用 Salesforce 查询替换更新,它将起作用。 -
为了进一步消除任何潜在的错误,我删除了它并用正常的初始化进程替换它
标签: wso2 wso2esb wso2carbon sfdc