Chilkat Examples

ChilkatHOMEAndroid™Classic ASPCC++C#Mono C#.NET Core C#C# UWP/WinRTDataFlexDelphi ActiveXDelphi DLLVisual FoxProJavaLianjaMFCObjective-CPerlPHP ActiveXPHP ExtensionPowerBuilderPowerShellPureBasicCkPythonChilkat2-PythonRubySQL ServerSwift 2Swift 3/4TclUnicode CUnicode C++Visual Basic 6.0VB.NETVB.NET UWP/WinRTVBScriptXojo PluginNode.jsExcelGo

Tcl Web API Examples

Primary Categories

CardConnect
Facebook
GeoOp
Jira
PayPal
Peoplevox
QuickBooks

Shopify
Stripe
SugarCRM
Twitter
VoiceBase
Walmart
Xero
eBay
effectconnect

 

 

 

(Tcl) eBay -- Upload Bulk Data using FileTransferService

Demonstrates how to upload your data file using the eBay File Transfer API.

Chilkat Tcl Extension Downloads

Chilkat Tcl Extension Downloads

load ./chilkat.dll

# This example assumes the Chilkat HTTP API to have been previously unlocked.
# See HTTP Unlock Sample for sample code.

# Use a previously obtained access token.  The token should look something like this:
# "AgAAAA**AQA ..."
set accessToken "EBAY_ACCESS_TOKEN"

set http [new_CkHttp]

set apiCall "uploadFile"
set fileAttachmentUuid "<urn:uuid:bb47b86a237311e793ae92361f002671>"
set xmlUuid "<urn:uuid:bb47b766237311e793ae92361f002671>"

set req [new_CkHttpRequest]

CkHttpRequest_put_HttpVerb $req "POST"
CkHttpRequest_put_Path $req "/FileTransferService"

set sbContentType [new_CkStringBuilder]

CkStringBuilder_Append $sbContentType "multipart/related; type=\"application/xop+xml\"; start=\"XMLUUID\"; start-info=\"text/xml\""
set replaceCount [CkStringBuilder_Replace $sbContentType "XMLUUID" $xmlUuid]
CkHttpRequest_put_ContentType $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"

set pathToFileOnDisk1 "qa_data/ebay/uploadFileRequest.xml"
set success [CkHttpRequest_AddFileForUpload $req "uploadFileRequest.xml" $pathToFileOnDisk1]
if {[expr $success != 1]} then {
    puts [CkHttpRequest_lastErrorText $req]
    delete_CkHttp $http
    delete_CkHttpRequest $req
    delete_CkStringBuilder $sbContentType
    exit
}

set pathToFileOnDisk2 "qa_data/ebay/BulkDataExchangeRequests.gz"
set success [CkHttpRequest_AddFileForUpload $req "BulkDataExchangeRequests.gz" $pathToFileOnDisk2]
if {[expr $success != 1]} then {
    puts [CkHttpRequest_lastErrorText $req]
    delete_CkHttp $http
    delete_CkHttpRequest $req
    delete_CkStringBuilder $sbContentType
    exit
}

# 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 is a CkHttpResponse
set resp [CkHttp_SynchronousRequest $http "storage.sandbox.ebay.com" 443 1 $req]
if {[expr [CkHttp_get_LastMethodSuccess $http] != 1]} then {
    puts [CkHttp_lastErrorText $http]
    delete_CkHttp $http
    delete_CkHttpRequest $req
    delete_CkStringBuilder $sbContentType
    exit
}

puts "Response status code = [CkHttpResponse_get_StatusCode $resp]"

set xml [new_CkXml]

CkXml_LoadXml $xml [CkHttpResponse_bodyStr $resp]

if {[expr [CkHttpResponse_get_StatusCode $resp] != 200]} then {
    puts [CkXml_getXml $xml]
    puts "Failed."
    delete_CkHttpResponse $resp

    delete_CkHttp $http
    delete_CkHttpRequest $req
    delete_CkStringBuilder $sbContentType
    delete_CkXml $xml
    exit
}

# 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>

puts [CkXml_getXml $xml]

# Get the "ack" to see if it's "Failure" or "Success"
if {[CkXml_ChildContentMatches $xml "ack" "Success" 0]} then {
    puts "Success."
} else {
    puts "Failure."
}

delete_CkHttpResponse $resp


delete_CkHttp $http
delete_CkHttpRequest $req
delete_CkStringBuilder $sbContentType
delete_CkXml $xml

 

© 2000-2019 Chilkat Software, Inc. All Rights Reserved.