通过 SOAP API Salesforce 合并帐户
Merging account via SOAP API Salesforce
无法理解我哪里出错了。我正在尝试使用 SOAP API 合并 Salesforce 中的两条记录。为此,我通过邮递员创建了以下 XML 请求:
<Envelope xmlns="http://schemas.xmlsoap.org/soap/envelope/">
<Header>
<SessionHeader xmlns="urn:enterprise.soap.sforce.com">
<sessionId>id is present</sessionId>
</SessionHeader>
</Header>
<Body>
<merge xmlns="urn:enterprise.soap.sforce.com">
<!-- Optional -->
<request>
<!-- Optional -->
<additionalInformationMap>
<name></name>
<value></value>
</additionalInformationMap>
<masterRecord>
<fieldsToNull xmlns="urn:sobject.enterprise.soap.sforce.com"></fieldsToNull>
<Id xmlns="urn:sobject.enterprise.soap.sforce.com">0012100000XRg7e</Id>
</masterRecord>
<recordToMergeIds>0012100000X1Ibf</recordToMergeIds>
</request>
</merge>
</Body>
但是,我遇到 "sf:InvalidSObjectFault" 错误并且无法理解原因:
<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:sf="urn:fault.enterprise.soap.sforce.com" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soapenv:Body>
<soapenv:Fault>
<faultcode>sf:INVALID_TYPE</faultcode>
<faultstring>INVALID_TYPE: Must send a concrete entity type.</faultstring>
<detail>
<sf:InvalidSObjectFault xsi:type="sf:InvalidSObjectFault">
<sf:exceptionCode>INVALID_TYPE</sf:exceptionCode>
<sf:exceptionMessage>Must send a concrete entity type.</sf:exceptionMessage>
<sf:row>-1</sf:row>
<sf:column>-1</sf:column>
</sf:InvalidSObjectFault>
</detail>
</soapenv:Fault>
</soapenv:Body>
您需要让它知道您的目标对象(又名类型或实体类型),记录 ID 是不够的。例如,如果您要合并 Account
对象上的记录,它可能如下所示:
<Envelope xmlns="http://schemas.xmlsoap.org/soap/envelope/" xmlns:sobject="urn:sobject.enterprise.soap.sforce.com">
<request>
<masterRecord xsi:type="sobject:Account" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
...
</masterRecord>
</request>
无法理解我哪里出错了。我正在尝试使用 SOAP API 合并 Salesforce 中的两条记录。为此,我通过邮递员创建了以下 XML 请求:
<Envelope xmlns="http://schemas.xmlsoap.org/soap/envelope/">
<Header>
<SessionHeader xmlns="urn:enterprise.soap.sforce.com">
<sessionId>id is present</sessionId>
</SessionHeader>
</Header>
<Body>
<merge xmlns="urn:enterprise.soap.sforce.com">
<!-- Optional -->
<request>
<!-- Optional -->
<additionalInformationMap>
<name></name>
<value></value>
</additionalInformationMap>
<masterRecord>
<fieldsToNull xmlns="urn:sobject.enterprise.soap.sforce.com"></fieldsToNull>
<Id xmlns="urn:sobject.enterprise.soap.sforce.com">0012100000XRg7e</Id>
</masterRecord>
<recordToMergeIds>0012100000X1Ibf</recordToMergeIds>
</request>
</merge>
</Body>
但是,我遇到 "sf:InvalidSObjectFault" 错误并且无法理解原因:
<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:sf="urn:fault.enterprise.soap.sforce.com" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soapenv:Body>
<soapenv:Fault>
<faultcode>sf:INVALID_TYPE</faultcode>
<faultstring>INVALID_TYPE: Must send a concrete entity type.</faultstring>
<detail>
<sf:InvalidSObjectFault xsi:type="sf:InvalidSObjectFault">
<sf:exceptionCode>INVALID_TYPE</sf:exceptionCode>
<sf:exceptionMessage>Must send a concrete entity type.</sf:exceptionMessage>
<sf:row>-1</sf:row>
<sf:column>-1</sf:column>
</sf:InvalidSObjectFault>
</detail>
</soapenv:Fault>
</soapenv:Body>
您需要让它知道您的目标对象(又名类型或实体类型),记录 ID 是不够的。例如,如果您要合并 Account
对象上的记录,它可能如下所示:
<Envelope xmlns="http://schemas.xmlsoap.org/soap/envelope/" xmlns:sobject="urn:sobject.enterprise.soap.sforce.com">
<request>
<masterRecord xsi:type="sobject:Account" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
...
</masterRecord>
</request>