EBay .Net SDK Api 實踐

 

 

1.請求流程介紹

 

提供SOA地址:https://api.ebay.com/wsapi api

 

WSDL生成的代碼在WebService.cs文件當中。 spa

 

ApiCall封裝了全部的RPC,其核心實如今SendRequest裏面,其中有兩個事件,請求以前,與請求以後 3d

CustomSecurityHeaderType封裝了用戶認證信息 日誌

SoapHttpClientProtocolEx繼承SoapHttpClientProtocol,加上了SoapRequest,SoapResponse屬性。用來生成請求和響應的XML報文。 orm

 

使用ApiLogManager進行日誌記錄 blog

 

2.實踐

 

  • 非string字段,使用 "屬性Specified" = true

如: 繼承

pagination.PageNumberSpecified = true; 事件

 

  • 捕獲ApiException,遍歷Errors來細化錯誤

如:在ReviseInventoryStatus時,一次調整四個SKU就須要遍歷錯誤結果 ci

  1. catch (ApiException apiEx)
  2. {
  3.     var str = string.Empty;
  4.     foreach (ErrorType error in apiEx.Errors)
  5.     {
  6.         if (error.SeverityCode == SeverityCodeType.Error)
  7.         {
  8.             foreach (ErrorParameterType ePara in error.ErrorParameters)
  9.             {
  10.                 str += ePara.ParamID + ":" + ePara.Value + " ";
  11.                 if (ePara.ParamID == "SKU")
  12.                 {
  13.                     returns.Remove(returns.First(zw => zw.SKU == ePara.Value));
  14.                 }
  15.             }
  16.             str += error.LongMessage + Environment.NewLine;
  17.         }
  18.     }
  19.  
  20.     //有錯誤的
  21.     NotifyAndLog(string.Format(ResPriceCaptureAndRevise.Wrong_PriceRevised, "", str),
  22.         LogLevel.Error, accPriceInfo.SellerAccount);
  23. }

 

  • 使用ApiResponse.Ack

若是使用Ack來判斷,可能某些有數據返回的時候,狀態不是Success,而是Warning get

  1. if (apicall.ApiResponse.Ack == AckCodeType.Success || apicall.ApiResponse.Ack == AckCodeType.Warning)
  2. {
  3.    //
  4. }

 

  • 分頁

Pagination

  1. PaginationType pager = new PaginationType();
  2. pager.EntriesPerPage = 100;
  3. pager.EntriesPerPageSpecified = true;
  4.  
  5. for (int page = 1; page <= totalPage; page++)
  6. {
  7.     pager.PageNumber = page;
  8.     pager.PageNumberSpecified = true;
  9.  
  10.     if (apicall.ApiResponse.Ack == AckCodeType.Success || apicall.ApiResponse.Ack == AckCodeType.Warning)
  11.     {
  12.         // 保存數據
  13.         totalNum = (apicall.ApiResponse.PaginationResult == null ? 0 : apicall.ApiResponse.PaginationResult.TotalNumberOfEntries);
  14.         totalPage = (apicall.ApiResponse.PaginationResult == null ? 0 : apicall.ApiResponse.PaginationResult.TotalNumberOfPages);
  15.      }
  16. }

在ApiResponse. PaginationResult的TotalNumberOfEntries和TotalNumberOfPages獲取總數和分頁數。

相關文章
相關標籤/搜索