首页 > 解决方案 > 将 HTML 模板代码传递给 VerifyAddItem/AddItem 中的描述 - 错误代码 20170

问题描述

我正在努力将 HTML 模板传递到 VerifyAddItem 的描述标签中。这是我正在使用的错误消息:

ebaysdk [ERROR]:VerifyAddItem: Class: RequestError, Severity: Error, Code: 20170, Schema XML request error. Schema XML request error: SimpleDeserializer encountered a child element, which is NOT expected, in something it was trying to deserialize..

关于如何实现这一点的文档很少。按照官方的 AddItem文档,我尝试将原始 html 文本包装在“<![CDATA[”+description_html_string +“]]”中。这样做会给我一个不同的错误:

ebaysdk [ERROR]:VerifyAddItem: Class: RequestError, Severity: Error, Code: 5, XML Parse error. XML Error Text: "; nestedexception is: org.xml.sax.SAXParseException: XML document structures must start and end within the same entity.".

我正在使用 JSON 为 API 调用构建我的有效负载,所以我什至不确定是否需要执行上述操作^。我知道我的有效载荷工作正常。只需将我的描述替换为如下所示的纯文本即可,即 VerifyAddItem API 调用成功:

"Item"{
 ...
     "Description" : "boring non html template description :("
...
}

使用更简单的 html 片段设置 Description 标记,如下所示: "<p> asdfasdfasd asdfasdf </p>" 也会产生相同的错误。

我知道我的 python 代码返回有效的 html,因为我已经在浏览器上运行了 HTML,它看起来很棒。此外,它不超过docs中指定的最大字符数。我已经尝试关注此页面,但他们的建议没有奏效。这让我相信这不是我的 HTML 的问题,而是我如何与 API 交互的问题。

我是 XML 的初学者。有没有人遇到过这些问题并可以提供帮助?关于我所遇到的错误,我至少想要更多的上下文。返回的错误对我来说不是很清楚。如果可能的话,我希望答案更适合 eBay SDK/Trading API,我的有效负载中是否缺少标签或其他什么?

标签: pythonjsonxmlebay-apiebay-sdk

解决方案


发现了问题,我的 CDATA 包装器中有错字,我错过了关闭的胡萝卜“>”。在构建有效负载时,我将我的描述设置为:

"Item"{
 ...
     "Description" : "<![CDATA[[<p>Cool item description</p>]]"
...
}

什么时候应该是:

"Item"{
 ...
     "Description" : "<![CDATA[[<p>Cool item description</p>]]>"
...
}

通过该修复,我的 VerifyAddItem 工作正常。


推荐阅读