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" loHttp = CreateObject('Chilkat_9_5_0.Http') loReq = CreateObject('Chilkat_9_5_0.HttpRequest') loReq.HttpVerb = "POST" loReq.Path = "/FileTransferService" loReq.ContentType = "application/xml" * Build the XML body for the request. loXml = CreateObject('Chilkat_9_5_0.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) loResponseBody = CreateObject('Chilkat_9_5_0.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. loMime = CreateObject('Chilkat_9_5_0.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() loXmlResp = CreateObject('Chilkat_9_5_0.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) loZipData = CreateObject('Chilkat_9_5_0.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. loSbContentType = CreateObject('Chilkat_9_5_0.StringBuilder') loSbContentType.Append(loPart1.ContentType) RELEASE loPart1 loXmlFromZip = CreateObject('Chilkat_9_5_0.Xml') IF (loSbContentType.Contains("gzip",0) = 1) THEN * This is a gzip compressed file. loGzip = CreateObject('Chilkat_9_5_0.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. loZip = CreateObject('Chilkat_9_5_0.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.