Visual FoxPro
Visual FoxPro
eBay -- Upload Bulk Data using FileTransferService
See more eBay Examples
Demonstrates how to upload your data file using the eBay File Transfer API.Chilkat Visual FoxPro Downloads
LOCAL lnSuccess
LOCAL lcAccessToken
LOCAL loHttp
LOCAL lcApiCall
LOCAL lcFileAttachmentUuid
LOCAL lcXmlUuid
LOCAL loReq
LOCAL loSbContentType
LOCAL lnReplaceCount
LOCAL lcPathToFileOnDisk1
LOCAL lcPathToFileOnDisk2
LOCAL loResp
LOCAL loXml
lnSuccess = 0
* 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.Http')
lcApiCall = "uploadFile"
lcFileAttachmentUuid = "<urn:uuid:bb47b86a237311e793ae92361f002671>"
lcXmlUuid = "<urn:uuid:bb47b766237311e793ae92361f002671>"
loReq = CreateObject('Chilkat.HttpRequest')
loReq.HttpVerb = "POST"
loReq.Path = "/FileTransferService"
loSbContentType = CreateObject('Chilkat.StringBuilder')
loSbContentType.Append('multipart/related; type="application/xop+xml"; start="XMLUUID"; start-info="text/xml"')
lnReplaceCount = loSbContentType.Replace("XMLUUID",lcXmlUuid)
loReq.ContentType = loSbContentType.GetAsString()
loReq.AddHeader("X-EBAY-SOA-SERVICE-NAME","FileTransferService")
loReq.AddHeader("X-EBAY-SOA-OPERATION-NAME",lcApiCall)
loReq.AddHeader("X-EBAY-SOA-SECURITY-TOKEN",lcAccessToken)
loReq.AddHeader("X-EBAY-SOA-REQUEST-DATA-FORMAT","XML")
loReq.AddHeader("X-EBAY-SOA-RESPONSE-DATA-FORMAT","XML")
loReq.AddHeader("User-Agent","AnythingYouWant")
lcPathToFileOnDisk1 = "qa_data/ebay/uploadFileRequest.xml"
lnSuccess = loReq.AddFileForUpload("uploadFileRequest.xml",lcPathToFileOnDisk1)
IF (lnSuccess = 0) THEN
? loReq.LastErrorText
RELEASE loHttp
RELEASE loReq
RELEASE loSbContentType
CANCEL
ENDIF
lcPathToFileOnDisk2 = "qa_data/ebay/BulkDataExchangeRequests.gz"
lnSuccess = loReq.AddFileForUpload("BulkDataExchangeRequests.gz",lcPathToFileOnDisk2)
IF (lnSuccess = 0) THEN
? loReq.LastErrorText
RELEASE loHttp
RELEASE loReq
RELEASE loSbContentType
CANCEL
ENDIF
* Add sub-headers for each file in the request.
loReq.AddSubHeader(0,"Content-Type",'application/xop+xml; charset=UTF-8; type="text/xml"')
loReq.AddSubHeader(0,"Content-Transfer-Encoding","binary")
loReq.AddSubHeader(0,"Content-ID",lcXmlUuid)
loReq.AddSubHeader(1,"Content-Type","application/octet-stream")
loReq.AddSubHeader(1,"Content-Transfer-Encoding","binary")
loReq.AddSubHeader(1,"Content-ID",lcFileAttachmentUuid)
loResp = CreateObject('Chilkat.HttpResponse')
lnSuccess = loHttp.HttpSReq("storage.sandbox.ebay.com",443,1,loReq,loResp)
IF (lnSuccess = 0) THEN
? loHttp.LastErrorText
RELEASE loHttp
RELEASE loReq
RELEASE loSbContentType
RELEASE loResp
CANCEL
ENDIF
? "Response status code = " + STR(loResp.StatusCode)
loXml = CreateObject('Chilkat.Xml')
loXml.LoadXml(loResp.BodyStr)
IF (loResp.StatusCode <> 200) THEN
? loXml.GetXml()
? "Failed."
RELEASE loHttp
RELEASE loReq
RELEASE loSbContentType
RELEASE loResp
RELEASE loXml
CANCEL
ENDIF
* 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>
? loXml.GetXml()
* Get the "ack" to see if it's "Failure" or "Success"
IF (loXml.ChildContentMatches("ack","Success",0)) THEN
? "Success."
ELSE
? "Failure."
ENDIF
RELEASE loHttp
RELEASE loReq
RELEASE loSbContentType
RELEASE loResp
RELEASE loXml