Chilkat HOME .NET Core C# Android™ AutoIt C C# C++ Chilkat2-Python CkPython Classic ASP DataFlex Delphi ActiveX Delphi DLL Go Java Lianja Mono C# Node.js Objective-C PHP ActiveX PHP Extension Perl PowerBuilder PowerShell PureBasic Ruby SQL Server Swift 2 Swift 3,4,5... Tcl Unicode C Unicode C++ VB.NET VBScript Visual Basic 6.0 Visual FoxPro Xojo Plugin
(Visual FoxPro) eBay -- Download Data using FileTransferServiceDemonstrates how to download a data file using the eBay File Transfer API. Note: This example requires Chilkat v9.5.0.67 or later.
LOCAL lcAccessToken LOCAL loHttp LOCAL loReq LOCAL loXml LOCAL loResp LOCAL lnStatusCode LOCAL loResponseBody LOCAL loMime LOCAL lnSuccess LOCAL loPart0 LOCAL lcDownloadResponseXml LOCAL loXmlResp LOCAL loPart1 LOCAL loZipData LOCAL loSbContentType LOCAL loXmlFromZip LOCAL loGzip LOCAL loZip LOCAL loEntry * 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 ..." lcAccessToken = "EBAY_ACCESS_TOKEN" * For versions of Chilkat < 10.0.0, use CreateObject('Chilkat_9_5_0.Http') loHttp = CreateObject('Chilkat.Http') * For versions of Chilkat < 10.0.0, use CreateObject('Chilkat_9_5_0.HttpRequest') loReq = CreateObject('Chilkat.HttpRequest') loReq.HttpVerb = "POST" loReq.Path = "/FileTransferService" loReq.ContentType = "application/xml" * Build the XML body for the request. * For versions of Chilkat < 10.0.0, use CreateObject('Chilkat_9_5_0.Xml') loXml = CreateObject('Chilkat.Xml') loXml.Tag = "downloadFileRequest" loXml.AddAttribute("xmlns","http://www.ebay.com/marketplace/services") loXml.UpdateChildContent("taskReferenceId","50013004806") loXml.UpdateChildContent("fileReferenceId","50015579016") loReq.LoadBodyFromString(loXml.GetXml(),"utf-8") * The XML body looks like this: * <?xml version="1.0" encoding="UTF-8"?> * <downloadFileRequest xmlns="http://www.ebay.com/marketplace/services"> * <taskReferenceId>50013004806</taskReferenceId> * <fileReferenceId>50015579016</fileReferenceId> * </downloadFileRequest> loReq.AddHeader("X-EBAY-SOA-OPERATION-NAME","downloadFile") loReq.AddHeader("X-EBAY-SOA-SECURITY-TOKEN",lcAccessToken) loResp = loHttp.SynchronousRequest("storage.sandbox.ebay.com",443,1,loReq) IF (loHttp.LastMethodSuccess <> 1) THEN ? loHttp.LastErrorText RELEASE loHttp RELEASE loReq RELEASE loXml CANCEL ENDIF lnStatusCode = loResp.StatusCode ? "Response status code = " + STR(lnStatusCode) * For versions of Chilkat < 10.0.0, use CreateObject('Chilkat_9_5_0.BinData') loResponseBody = CreateObject('Chilkat.BinData') loResp.GetBodyBd(loResponseBody) RELEASE loResp * We can save the response body to a file for examination if we get an unanticipated response. * (It's binary, so it won't open well in a text editor.) loResponseBody.WriteFile("qa_output/response.mime") IF (lnStatusCode <> 200) THEN ? "Failed." RELEASE loHttp RELEASE loReq RELEASE loXml RELEASE loResponseBody CANCEL ENDIF * The response body looks like this: * --MIMEBoundaryurn_uuid_2B668636C1E17A4D4114925305818684241 * Content-Type: application/xop+xml; charset=utf-8; type="text/xml" * Content-Transfer-Encoding: binary * Content-ID: <0.urn:uuid:2B668636C1E17A4D4114925305818684242> * * <?xml version='1.0' encoding='UTF-8'?> * <downloadFileResponse xmlns="http://www.ebay.com/marketplace/services"> * <ack>Success</ack> * <version>1.1.0</version> * <timestamp>2017-04-18T15:49:41.868Z</timestamp> * <fileAttachment> * <Size>587</Size> * <Data> * <xop:Include xmlns:xop="http://www.w3.org/2004/08/xop/include" href="cid:urn:uuid:A37C3C73E994C267F11492530585522"/> * </Data> * </fileAttachment> * </downloadFileResponse> * --MIMEBoundaryurn_uuid_2B668636C1E17A4D4114925305818684241 * Content-Type: application/zip * Content-Transfer-Encoding: binary * Content-ID: <urn:uuid:A37C3C73E994C267F11492530585522> * * <the binary bytes of the zip start here...> * * Load the binary response into a MIME object. * For versions of Chilkat < 10.0.0, use CreateObject('Chilkat_9_5_0.Mime') loMime = CreateObject('Chilkat.Mime') lnSuccess = loMime.LoadMimeBd(loResponseBody) IF (lnSuccess <> 1) THEN ? loMime.LastErrorText RELEASE loHttp RELEASE loReq RELEASE loXml RELEASE loResponseBody RELEASE loMime CANCEL ENDIF * Make sure we have 2 sub-parts. The 1st sub-part is the XML response, the 2nd sub-part * is the zip containing the data. * Note: The 2nd sub-part can be a "zip" or "gzip". These are two different file formats. * A zip is indicated with a Content-Type header equal to "application/zip", * whereas a gzip is indicated with a Content-Type header equal to "application/x-gzip" IF (loMime.NumParts <> 2) THEN ? "Expected the MIME to have 2 parts." ? "NumParts = " + STR(loMime.NumParts) ? "Failed." RELEASE loHttp RELEASE loReq RELEASE loXml RELEASE loResponseBody RELEASE loMime CANCEL ENDIF * Get the XML from the 1st MIME sub-part. loPart0 = loMime.GetPart(0) lcDownloadResponseXml = loPart0.GetBodyDecoded() * For versions of Chilkat < 10.0.0, use CreateObject('Chilkat_9_5_0.Xml') loXmlResp = CreateObject('Chilkat.Xml') loXmlResp.LoadXml(lcDownloadResponseXml) ? "Download Response XML:" ? loXmlResp.GetXml() RELEASE loPart0 ? "----" * Now get the zip from the second part (index=1), unzip, and examine.. loPart1 = loMime.GetPart(1) * For versions of Chilkat < 10.0.0, use CreateObject('Chilkat_9_5_0.BinData') loZipData = CreateObject('Chilkat.BinData') * This example requires Chilkat v9.5.0.67 or later. * The GetBodyBd method was added in v9.5.0.67. loPart1.GetBodyBd(loZipData) * Check to see if we have a zip or gzip. * For versions of Chilkat < 10.0.0, use CreateObject('Chilkat_9_5_0.StringBuilder') loSbContentType = CreateObject('Chilkat.StringBuilder') loSbContentType.Append(loPart1.ContentType) RELEASE loPart1 * For versions of Chilkat < 10.0.0, use CreateObject('Chilkat_9_5_0.Xml') loXmlFromZip = CreateObject('Chilkat.Xml') IF (loSbContentType.Contains("gzip",0) = 1) THEN * This is a gzip compressed file. * For versions of Chilkat < 10.0.0, use CreateObject('Chilkat_9_5_0.Gzip') loGzip = CreateObject('Chilkat.Gzip') * in-place uncompress the data. * Note: The UncompressBd method was added in Chilkat v9.5.0.67 lnSuccess = loGzip.UncompressBd(loZipData) IF (lnSuccess <> 1) THEN ? loGzip.LastErrorText RELEASE loHttp RELEASE loReq RELEASE loXml RELEASE loResponseBody RELEASE loMime RELEASE loXmlResp RELEASE loZipData RELEASE loSbContentType RELEASE loXmlFromZip RELEASE loGzip CANCEL ENDIF loXmlFromZip.LoadXml(loZipData.GetString("utf-8")) ELSE * This is a zip archive. * Load the body into a Zip object. * For versions of Chilkat < 10.0.0, use CreateObject('Chilkat_9_5_0.Zip') loZip = CreateObject('Chilkat.Zip') lnSuccess = loZip.OpenBd(loZipData) IF (lnSuccess <> 1) THEN ? loZip.LastErrorText RELEASE loHttp RELEASE loReq RELEASE loXml RELEASE loResponseBody RELEASE loMime RELEASE loXmlResp RELEASE loZipData RELEASE loSbContentType RELEASE loXmlFromZip RELEASE loGzip RELEASE loZip CANCEL ENDIF * Save the .zip to a file (so we can examine it for debugging if something is not as expected) loZipData.WriteFile("qa_output/ebay_data.zip") * The zip should contain a single XML file. IF (loZip.NumEntries <> 1) THEN ? "Expected the .zip to have 1 entry." ? "NumEntries = " + STR(loZip.NumEntries) ? "Failed." RELEASE loHttp RELEASE loReq RELEASE loXml RELEASE loResponseBody RELEASE loMime RELEASE loXmlResp RELEASE loZipData RELEASE loSbContentType RELEASE loXmlFromZip RELEASE loGzip RELEASE loZip CANCEL ENDIF loEntry = loZip.GetEntryByIndex(0) loXmlFromZip.LoadXml(loEntry.UnzipToString(0,"utf-8")) RELEASE loEntry ENDIF ? "XML contained in the zip:" ? loXmlFromZip.GetXml() ? "----" ? "Success." RELEASE loHttp RELEASE loReq RELEASE loXml RELEASE loResponseBody RELEASE loMime RELEASE loXmlResp RELEASE loZipData RELEASE loSbContentType RELEASE loXmlFromZip RELEASE loGzip RELEASE loZip |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.