我正在对Silverpop API进行一些测试,最终目标是每天晚上上传CSV来更新Silverpop表。我能够成功上传csv和xml文件,并获得API的oauth访问令牌。但是,我的第一个实际通话遇到了麻烦。
这是我要发送的内容:
<?xml version="1.0" encoding="ISO-8859-1"?>
<Envelope>
<Body>
<ImportList>
<MAP_FILE>silverPopTest.xml</MAP_FILE>
<SOURCE_FILE>silverPopTest.csv</SOURCE_FILE>
<EMAIL>Nicholas@xxxxxxxxxxxxxxxxxxxx.com</EMAIL>
</ImportList>
</Body>
</Envelope>
这是我收到的“故障字符串”: 缺少“ xml”参数
我不确定这是什么意思。
我相信我在文档中包含了此命令的所有必需参数。我尝试过使用和不使用“ xml”行,例如application / xml和text / xml,以及其他各种变体。作为参考,这是我整个通话的代码:
<cfhttp method="POST" url="https://api3.ibmmarketingcloud.com/XMLAPI">
<cfhttpparam type="header" name="Content-Type" value="application/xml" />
<cfhttpparam type="header" name="Accept" value="application/xml">
<cfhttpparam type="header" name="Authorization" value="Bearer #accessToken#" />
<cfhttpparam type="body" value="#xmlBody#">
</cfhttp>
这是错误xml:
<Envelope><Body><RESULT><SUCCESS>false</SUCCESS></RESULT><Fault><Request/><FaultCode/><FaultString>Missing 'xml'parameter</FaultString><detail><error><errorid>52</errorid><module/><class>SP.API</class><method/></error></detail></Fault></Body></Envelope>
这是我的CSV文件:
"userid","Email","firstName","lastName"
"123fdasTEST1asdf321","nicholas+test1@xxxxxxxxxxxxxxxxxxx.com","testFirst 1","testLast 1"
"123fdasTEST2asdf321","nicholas+test2@xxxxxxxxxxxxxxxxxxx.com","testFirst 2","testLast 2"
这是我的“地图”文件:
<LIST_IMPORT>
<LIST_INFO>
<ACTION>ADD_AND_UPDATE</ACTION>
<LIST_ID>9999999</LIST_ID>
<FILE_TYPE>0</FILE_TYPE>
<HASHEADERS>true</HASHEADERS>
</LIST_INFO>
<COLUMNS>
<COLUMN>
<NAME>userid</NAME>
<TYPE>0</TYPE>
<IS_REQUIRED>true</IS_REQUIRED>
<KEY_COLUMN>true</KEY_COLUMN>
</COLUMN>
<COLUMN>
<NAME>Email</NAME>
<TYPE>9</TYPE>
<IS_REQUIRED>true</IS_REQUIRED>
</COLUMN>
<COLUMN>
<NAME>firstName</NAME>
<TYPE>0</TYPE>
<IS_REQUIRED>true</IS_REQUIRED>
</COLUMN>
<COLUMN>
<NAME>lastName</NAME>
<TYPE>0</TYPE>
<IS_REQUIRED>true</IS_REQUIRED>
</COLUMN>
</COLUMNS>
<MAPPING>
<COLUMN>
<INDEX>1</INDEX>
<NAME>userid</NAME>
<INCLUDE>true</INCLUDE>
</COLUMN>
<COLUMN>
<INDEX>2</INDEX>
<NAME>EMAIL</NAME>
<INCLUDE>true</INCLUDE>
</COLUMN>
<COLUMN>
<INDEX>3</INDEX>
<NAME>firstName</NAME>
<INCLUDE>true</INCLUDE>
</COLUMN>
<COLUMN>
<INDEX>4</INDEX>
<NAME>lastName</NAME>
<INCLUDE>true</INCLUDE>
</COLUMN>
</MAPPING>
</LIST_IMPORT>
答案 0 :(得分:0)
在与Silverpop客户支持人员合作之后,他们说我的文件和电话对他们来说一切正常,我们确定了问题所在。 XML声明:
<?xml version="1.0" encoding="ISO-8859-1"?>
需要成为文档中的第一件事。尽管它似乎在上方,但实际上在它之前有几个制表位。当Silverpop的工具修剪掉这些多余的字符时,ColdFusion会按原样发送它,而Silverpop的服务器只是返回了一般错误。
解决方案是删除这些制表位,或者在发送前修剪xml。