【发布时间】:2018-11-05 13:01:51
【问题描述】:
我正在尝试通过 Delphi 调用 eBay API。经过谷歌和 StackOverflow 的长时间搜索,我现在可以正常使用“GeteBayTime”(Shopping API)和“findItemsByKeywords”(Finding API)了。
当我开始使用 Trading API 进行测试时,我不知道在哪里以及如何插入卖家的账户信息(用户名和密码)。我的第一个交易 API 程序如下所示,它以 API 调用“GetSellingManagerSoldListings”开始。
谁能告诉我一些使交易 API 工作的线索?如果还需要向 HTTP.header 或 Paramters 添加任何其他内容?
谢谢。
procedure TForm1.btnEBayGetSoldListClick(Sender: TObject);
var
sURL, sResponse, sEndpoint: String;
jResult: TJSONObject;
sCallName, sSiteID, sVersion: String;
k: Integer;
sParameters: String;
sHeaders: TStringList;
sRequestBody: TStringStream;
begin
// Trading API
sEndpoint := 'https://api.sandbox.ebay.com/ws/api.dll';
sCallName := 'GetSellingManagerSoldListingsRequest';
sSiteID := '15';
sVersion := '967';
sAppID := 'myAppID';
sDevID := 'myDevID';
sToken : 'myToken'; // OAuth Token?
sURL := sEndpoint
+ '?callname=' + sCallName
+ '&siteid=' + '15';
sHeaders := TStringList.Create;
with sHeaders do begin
Add('X-EBAY-API-COMPATIBILITY-LEVEL' + '=' + sVersion);
Add('X-EBAY-API-DEV-NAME' + '=' + sDevID);
Add('X-EBAY-API-APP-NAME' + '=' + sAppID);
Add('X-EBAY-API-CERT-NAME' + '=' + sCertID);
Add('X-EBAY-API-CALL-NAME' + '=' + sCallName);
Add('X-EBAY-API-SITEID' + '=' + sSiteID);
end;
objHTTP.Request.ContentType := 'text/xml';
with objHTTP.Request.CustomHeaders do begin
Clear;
AddStdValues(sHeaders);
end;
sHeaders.Free;
sParameters := '<GetSellingManagerSoldListingsRequest xmlns="urn:ebay:apis:eBLBaseComponents">'
+ ' <RequesterCredentials>'
+ ' <eBayAuthToken>' + sToken + '</eBayAuthToken>'
+ ' <Filter>' + 'PaidNotShipped' + '</Filter>'
+ ' </RequesterCredentials>'
+ '</GetItemTransactionsRequest>';
sRequestBody := TStringStream.Create(sParameters, TEncoding.UTF8);
try
sResponse := objHTTP.Post(sURL, sRequestBody);
memHTML.Lines.Add(sResponse);
memHTML.Lines.Add('');
except
sResponse := objHTTP.ResponseText;
memHTML.Lines.Add(sResponse);
memHTML.Lines.Add('');
end;
end;
【问题讨论】:
-
究竟是什么不适合您?您是否收到来自 eBay 的错误回复?如果是这样,它究竟说了什么?您阅读过GetSellingManagerSoldListings 和Working with Selling Manager 文档吗?
-
您是否注意到您的 XML 格式不正确?你用
<GetSellingManagerSoldListingsRequest>打开它,但用</GetItemTransactionsRequest>而不是</GetSellingManagerSoldListingsRequest>关闭它 -
非常感谢 Remy Lebeau。我收到错误消息说请求不匹配,但我根本找不到。让我纠正这个错误并再次测试它。我阅读了那些文件,但无法完全理解它们 -> 像我这样愚蠢的家伙。
-
@RemyLebeau 我粘贴了错误代码作为答案,请您花点时间看看吗?谢谢。