我正在尝试用PHP为活动列表提取一个报告。
我已经取得了进步,然而,我无法理解这是如何运作的,也没有什么可以解释它
例如,在PHP库提供的Samples中,我看到了相当多的XML文件。当您运行RequestReportResponse
示例时,它是生成XML文件,还是XML文件根据值和函数告诉RequestReportResponse
该做什么?
我这么问是因为,使用MWS Scratchpad,我选择了所有必要的字段,提交它,然后刷新我的卖家中心部分的亚马逊报告页面,它显示了一个待定的报告。
我只是问XML内容如何影响报告,或者报告如何影响XML。
问题的答案分为两部分。
第1部分-调用Amazon API
大多数MWS请求不需要任何文件(无论是纯文本还是XML)发送到亚马逊。例如,发送RequestReport
所需的所有参数都可以(也必须)作为常规参数发送。我不确定如果你提交了一个我从未尝试过的文件,亚马逊会怎么做。但话说回来。。。你为什么要?
确实需要发送文件的调用之一是SubmitFeed
调用,其中该文件是要提交的实际提要。这取决于您提交的提要类型,亚马逊是否希望它是纯文本或XML。
第2部分-处理亚马逊的API响应
当您从Amazon的API获取信息时,通常是XML格式的(有一些调用可能会返回纯文本)。您需要对这些数据进行解码以获取您的信息。
为了更清楚一点,我将为您概述一个典型的过程:
从亚马逊获取所有物品的过程:
- 给亚马逊打一个
RequestReport
电话。未附加XML -
对返回的XML进行解码(它是一个
RequestReportResponse
)。如果一切顺利,您将得到一个RequestReportId
作为响应的一部分,亚马逊将开始处理您的请求。亚马逊可能需要几分钟的时间来实际创建报告,在非常复杂或大型请求的情况下,或者在高活动时间内,它实际上可能需要一个小时或更长时间。因此,我们需要了解我们提出的请求实际何时完成。
-
使用
GetReportRequestList
调用Poke Amazon API,询问您使用ReportRequestIdList.Id.1={YourRequestIdHere}
请求的状态。这也不需要XML附件。 -
对返回的XML进行解码。(它是
GetReportRequestListResponse
)如果其
ReportProcessingStatus
不是_DONE_
,请等待至少45秒,然后从步骤3开始重复。如果报告实际完成,您将在响应中看到一个有效的GeneratedReportId
。如果它不见了,你需要额外打一个GetReportList
电话来找到它的ID。 -
致电
GetReport
,使用ReportId={YourGeneratedReportIdHere}
最终获取您的报告 -
解码你得到的任何信息。根据您请求的报告类型,响应可能是XML或纯文本。
这个过程在Amazon Marketplace Web Service Reports API章节参考(版本2009-01-01)中有详细解释(并有一个漂亮的流程图)
要最终回答您关于从亚马逊MWS获得活跃房源的问题:这三个调用都不需要向Amazon发送XML。您从Amazon收到的数据将是XML格式的(如果您请求纯文本报告,则可能会出现步骤6的异常)。