![]() |
Chilkat HOME Android™ AutoIt C C# C++ Chilkat2-Python CkPython Classic ASP DataFlex Delphi DLL Go Java Node.js Objective-C PHP Extension Perl PowerBuilder PowerShell PureBasic Ruby SQL Server Swift Tcl Unicode C Unicode C++ VB.NET VBScript Visual Basic 6.0 Visual FoxPro Xojo Plugin
(Delphi DLL) eBay -- Upload Bulk Data using FileTransferServiceDemonstrates how to upload your data file using the eBay File Transfer API. Note: This example requires Chilkat v11.0.0 or greater.
uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Http, HttpRequest, Xml, HttpResponse, StringBuilder; ... procedure TForm1.Button1Click(Sender: TObject); var success: Boolean; accessToken: PWideChar; http: HCkHttp; apiCall: PWideChar; fileAttachmentUuid: PWideChar; xmlUuid: PWideChar; req: HCkHttpRequest; sbContentType: HCkStringBuilder; replaceCount: Integer; pathToFileOnDisk1: PWideChar; pathToFileOnDisk2: PWideChar; resp: HCkHttpResponse; xml: HCkXml; begin success := False; // This example assumes the Chilkat API to have been previously unlocked. // See Global Unlock Sample for sample code. // Use a previously obtained access token. The token should look something like this: // "AgAAAA**AQA ..." accessToken := 'EBAY_ACCESS_TOKEN'; http := CkHttp_Create(); apiCall := 'uploadFile'; fileAttachmentUuid := '<urn:uuid:bb47b86a237311e793ae92361f002671>'; xmlUuid := '<urn:uuid:bb47b766237311e793ae92361f002671>'; req := CkHttpRequest_Create(); CkHttpRequest_putHttpVerb(req,'POST'); CkHttpRequest_putPath(req,'/FileTransferService'); sbContentType := CkStringBuilder_Create(); CkStringBuilder_Append(sbContentType,'multipart/related; type="application/xop+xml"; start="XMLUUID"; start-info="text/xml"'); replaceCount := CkStringBuilder_Replace(sbContentType,'XMLUUID',xmlUuid); CkHttpRequest_putContentType(req,CkStringBuilder__getAsString(sbContentType)); CkHttpRequest_AddHeader(req,'X-EBAY-SOA-SERVICE-NAME','FileTransferService'); CkHttpRequest_AddHeader(req,'X-EBAY-SOA-OPERATION-NAME',apiCall); CkHttpRequest_AddHeader(req,'X-EBAY-SOA-SECURITY-TOKEN',accessToken); CkHttpRequest_AddHeader(req,'X-EBAY-SOA-REQUEST-DATA-FORMAT','XML'); CkHttpRequest_AddHeader(req,'X-EBAY-SOA-RESPONSE-DATA-FORMAT','XML'); CkHttpRequest_AddHeader(req,'User-Agent','AnythingYouWant'); pathToFileOnDisk1 := 'qa_data/ebay/uploadFileRequest.xml'; success := CkHttpRequest_AddFileForUpload(req,'uploadFileRequest.xml',pathToFileOnDisk1); if (success = False) then begin Memo1.Lines.Add(CkHttpRequest__lastErrorText(req)); Exit; end; pathToFileOnDisk2 := 'qa_data/ebay/BulkDataExchangeRequests.gz'; success := CkHttpRequest_AddFileForUpload(req,'BulkDataExchangeRequests.gz',pathToFileOnDisk2); if (success = False) then begin Memo1.Lines.Add(CkHttpRequest__lastErrorText(req)); Exit; end; // Add sub-headers for each file in the request. CkHttpRequest_AddSubHeader(req,0,'Content-Type','application/xop+xml; charset=UTF-8; type="text/xml"'); CkHttpRequest_AddSubHeader(req,0,'Content-Transfer-Encoding','binary'); CkHttpRequest_AddSubHeader(req,0,'Content-ID',xmlUuid); CkHttpRequest_AddSubHeader(req,1,'Content-Type','application/octet-stream'); CkHttpRequest_AddSubHeader(req,1,'Content-Transfer-Encoding','binary'); CkHttpRequest_AddSubHeader(req,1,'Content-ID',fileAttachmentUuid); resp := CkHttpResponse_Create(); success := CkHttp_HttpSReq(http,'storage.sandbox.ebay.com',443,True,req,resp); if (success = False) then begin Memo1.Lines.Add(CkHttp__lastErrorText(http)); Exit; end; Memo1.Lines.Add('Response status code = ' + IntToStr(CkHttpResponse_getStatusCode(resp))); xml := CkXml_Create(); CkXml_LoadXml(xml,CkHttpResponse__bodyStr(resp)); if (CkHttpResponse_getStatusCode(resp) <> 200) then begin Memo1.Lines.Add(CkXml__getXml(xml)); Memo1.Lines.Add('Failed.'); Exit; end; // We still may have a failure. The XML needs to be checked. // A failed response might look like this: // <?xml version="1.0" encoding="UTF-8" ?> // <uploadFileResponse xmlns="http://www.ebay.com/marketplace/services"> // <ack>Failure</ack> // <errorMessage> // <error> // <errorId>1</errorId> // <domain>Marketplace</domain> // <severity>Error</severity> // <category>Application</category> // <message>Task Reference Id is invalid</message> // <subdomain>FileTransfer</subdomain> // </error> // </errorMessage> // <version>1.1.0</version> // <timestamp>2017-04-18T01:05:27.475Z</timestamp> // </uploadFileResponse> // A successful response looks like this: // <?xml version="1.0" encoding="UTF-8" ?> // <uploadFileResponse xmlns="http://www.ebay.com/marketplace/services"> // <ack>Success</ack> // <version>1.1.0</version> // <timestamp>2017-04-18T01:22:47.853Z</timestamp> // </uploadFileResponse> Memo1.Lines.Add(CkXml__getXml(xml)); // Get the "ack" to see if it's "Failure" or "Success" if (CkXml_ChildContentMatches(xml,'ack','Success',False)) then begin Memo1.Lines.Add('Success.'); end else begin Memo1.Lines.Add('Failure.'); end; CkHttp_Dispose(http); CkHttpRequest_Dispose(req); CkStringBuilder_Dispose(sbContentType); CkHttpResponse_Dispose(resp); CkXml_Dispose(xml); end; |
© 2000-2025 Chilkat Software, Inc. All Rights Reserved.