Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/228.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 易趣API使用getSellerList调用获取所有产品,无开始和结束时间_Php_Xml_Request_Ebay Api - Fatal编程技术网

Php 易趣API使用getSellerList调用获取所有产品,无开始和结束时间

Php 易趣API使用getSellerList调用获取所有产品,无开始和结束时间,php,xml,request,ebay-api,Php,Xml,Request,Ebay Api,我试图从用户的易趣帐户中获取所有产品,但当我运行代码时,只获得几百个。我可以确认有2000种产品 如何在不使用开始和结束时间和日期参数的情况下提取所有产品 如果我删除带有至的代码行,则根本不显示任何产品 $url = 'https://api.ebay.com/ws/api.dll'; $user_name = "{username is in here}"; $auth_token = "{token is in here}"; for ($i = 1; $i <= 10; $i++)

我试图从用户的易趣帐户中获取所有产品,但当我运行代码时,只获得几百个。我可以确认有2000种产品

如何在不使用开始和结束时间和日期参数的情况下提取所有产品

如果我删除带有
的代码行,则根本不显示任何产品

$url = 'https://api.ebay.com/ws/api.dll';
$user_name  = "{username is in here}";
$auth_token = "{token is in here}";
for ($i = 1; $i <= 10; $i++) {
    $headers = array(
      'Content-Type: text/xml',
      'X-EBAY-API-COMPATIBILITY-LEVEL:877',
      'X-EBAY-API-DEV-NAME:177b0624-2d99-428a-8659-7404d9043c76',
      'X-EBAY-API-APP-NAME:PeteNayl-d415-49bb-a950-495237441c1c',
      'X-EBAY-API-CERT-NAME:6c336965-1a1f-4d11-94b1-3843c3ac995b',
      'X-EBAY-API-SITEID:3',
      'X-EBAY-API-CALL-NAME:GetSellerList'
    );

    $xml = '<?xml version="1.0" encoding="utf-8"?>
    <GetSellerListRequest xmlns="urn:ebay:apis:eBLBaseComponents">
    <RequesterCredentials>
    <eBayAuthToken>'.$auth_token.'</eBayAuthToken>
    </RequesterCredentials>
    <Pagination ComplexType="PaginationType">
        <EntriesPerPage>200</EntriesPerPage>
    <PageNumber>'.$i.'</PageNumber>
    </Pagination>
    <StartTimeFrom>2014-06-01T21:59:59.005Z</StartTimeFrom>
    <StartTimeTo>2014-06-02T21:59:59.005Z</StartTimeTo>
    <EndTimeFrom>2014-09-29T21:59:59.005Z</EndTimeFrom>
    <EndTimeTo>2014-09-30T21:59:59.005Z</EndTimeTo>
    <DetailLevel>ItemReturnDescription</DetailLevel>
    <UserID>'.$user_name.'</UserID>
    </GetSellerListRequest>';

...
$url='1!'https://api.ebay.com/ws/api.dll';
$user_name=“{username在这里}”;
$auth_token=“{token在这里}”;

对于($i=1;$i请查看官方网站,您只需根据下面粗体标记的部分调整参数:)

GetSellerList

使用此调用检索 已验证的用户,包括项目数据

GetSellerList返回零个或多个项的数组,具体取决于 用户的活动和呼叫中使用的输入。输入字段可以 增加或过滤返回的数据。请参见浏览卖家的商品 有关使用GetSellerList检索项的详细说明

在所有通话中,必须至少使用一个日期范围筛选器 指定的

您可以指定DetailLevel来控制响应数据。如果你设定 在DetailLevel中,必须设置分页值

GetSellerList每次调用最多返回5000个项目(这是 如果不指定详细程度,并因此返回 每个项目的最小数据集)。但是,如果您指定了 DetailLevel值(从而增加为每个 项),您可能需要使用分页值来获取完整的 结果集。如果使用DetailLevel,则响应不能包含更多内容 每次通话超过200项。

许多项目详细信息(如项目描述和列表增强) 不要经常更改,获取这些值会增加 你的电话。在您最初下载一组 项,这些项的后续请求应仅检索 可能更改的项目信息。最好避免使用 返回的详细级别全部或粒度级别的细粒 GetSellerList。或者考虑使用GeSeleRevices代替 GetSellerList

如果需要使用ReturnAll检索所有项目详细信息,请使用 较小的EntriesPerPage值以限制返回的项目数 从电话里。要提高性能,请指定较短的时间范围 使用EndTimeFrom和EndTimeTo

您可以在应用程序中指定DetailLevel或GranularityLevel 请求,但不是两者都请求。请参见指定详细级别和粒度 级别,了解有关详细程度的详细信息

使用分页来控制返回的数据页。这个 Pagination.EntriesPage字段控制返回的项目数 每次调用,Pagination.PageNumber指定要调用的数据页 在当前调用中检索。为EntriesPerPage指定的值 必须介于1和200之间

您可以在同一调用中使用多个日期范围筛选器。例如 如果希望得到对的响应,可以使用StartTimeFrom和StartTimeTo 包含两次之间开始的列表。使用EndTimeFrom 和EndTimeTo返回两次之间结束的列表

使用响应GetSellerList返回卖家列表 ItemArray容器中的项

响应数据包含ItemArray中的ItemType对象。 每个ItemType对象都包含列表的数据。储存物品 应用程序所需的数据。在输出中 ReturnedItemCountActual属性指示已删除的项目数 由呼叫返回;Count表示可以添加多少项 返回。HasMoreItems,如果为true,则表示有更多项 要返回,需要一个或多个附加呼叫。当前页数 指示返回的数据页,ItemsPerPage指示 每次呼叫返回的项目数

测试GetSellerList您可以在沙箱中测试此调用 使用AddItem添加至少两个项目后的环境

某些值仅在调用请求者是的卖方时返回 这个项目。要从另一个用户的角度测试调用,请调用 GetSellerList的用户不是列出项目的用户

对于列出不同类型项目(如中文)的应用程序 拍卖和固定价格物品),创建所有可能的物品类型 使用AddItem,然后尝试使用GetSellerList检索数据

如果适用于应用程序的用例,请列出带有 固定和计算运费。然后使用 GetSellerList

用于创建竞价项目列表的应用程序(中文) 拍卖),在拍卖前使用沙箱用户界面对物品进行竞价 使用GetSellerList检索项目。这将填充高 结果集中项目的投标人数据

使用不同的细节组合测试对GetSellerList的调用 级别、分页和基于日期的筛选,以覆盖所有 应用程序可能必须适应的可能场景 真实世界条件


希望我能为您提供帮助。

如果没有时间范围,您无法发送请求,并且从开始到结束之间的时间不能超过120天。如果您想收回所有产品,您必须向GetSellerList发出多个请求,其中每个请求涵盖一个特定的120天期限


可以在eBay文档中找到请求中的和字段的信息。请注意,文档中没有说明这些字段是必需的,但如果您在请求中没有包含这些字段,则响应的Ack字段中将返回失败值。

我遇到了这个问题,但我最终得到了简单的解决方案。时间范围不应设置为相隔120天以上。您可以从您想要的任何年份和月份开始,只要它们之间的值不应超过120天。比如说曲,
 <?xml version="1.0" encoding="utf-8"?>
 <GetSellerListRequest xmlns="urn:ebay:apis:eBLBaseComponents">    
 <ErrorLanguage>en_US</ErrorLanguage>
 <WarningLevel>High</WarningLevel>     
 <GranularityLevel>Coarse</GranularityLevel> 
   <StartTimeFrom>2016-03-21T06:38:48.420Z</StartTimeFrom> 
   <StartTimeTo>2016-07-15T06:38:48.420Z</StartTimeTo> 
  <IncludeWatchCount>true</IncludeWatchCount> 
  <Pagination> 
    <EntriesPerPage>2</EntriesPerPage> 
  </Pagination> 
</GetSellerListRequest>
    from_date = EBAY_START_DATE

    while from_date < NOW:

        to_date = from_date + 120 DAYS

        call GetSellList (from_date, to_date)

        Do something with the data

        from_date = from_date + 120 DAYS
    def getProducts(self):
        products = []

        # loop thru seller list 120 days at a time
        from_date = str2datetime(EBAY_START_DATE + ' 00:00:00')
        while from_date < datetime.now():

            # get seller list
            to_date = from_date + timedelta(days=120)
            request = {'StartTimeFrom': from_date, 'StartTimeTo': to_date}
            resp = self.ebayApi.get('GetSellerList', request)

            # get each product
            if resp.reply.ItemArray:
                items = resp.reply.ItemArray.Item
                if not isinstance(items, list):
                    items = [items]
                for item in items:
                    item_id = item.ItemID
                    request = {'ItemID': item_id}                     
                    resp = self.ebayApi.get('GetItem', request)
                    products.append(resp.dict()['Item'])

            from_date = from_date + timedelta(days=120)

        return products