Sample code for 30+ languages & platforms
B4X

effectconnect Create or Replace Product Catalog

See more effectconnect Examples

Use this call to create or replace a product catalog in EffectConnect. This is always a purge and replace action for the entire catalog.

Chilkat B4X Downloads

B4X
Dim success As Boolean = False

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

Dim uri As String = "/products"
Dim apiVersion As String = "2.0"

Dim http As ChilkatHttp
http.Initialize("http")
Dim req As ChilkatHttpRequest
req.Initialize

'  Use your effectconnect public key here...
req.AddHeader("KEY", "PUBLIC_KEY")
req.AddHeader("VERSION", apiVersion)
req.AddHeader("URI", uri)
req.AddHeader("RESPONSETYPE", "XML")
req.AddHeader("RESPONSELANGUAGE", "en")

'  Get the current date/time in timestamp format.
Dim dt As ChilkatDateTime
dt.Initialize
dt.SetFromCurrentSystemTime
Dim timestamp As String = dt.GetAsTimestamp(True)

req.AddHeader("TIME", timestamp)
Log("timestamp = " & timestamp)

Dim sbXml As ChilkatStringBuilder
sbXml.Initialize
success = sbXml.LoadFile("qa_data/xml/effectconnect/effconCreate.xml", "utf-8")
Log("length = " & sbXml.Length)

req.HttpVerb = "POST"
req.Path = uri
req.ContentType = "multipart/form-data"
success = req.AddStringForUpload("payload", "effcon.xml", sbXml.GetAsString, "utf-8")
If success = False Then
    Log(req.LastErrorText)
    Return
End If


'  Build a string-to-sign and sign it using our effectconnect private key
Dim sbStringToSign As ChilkatStringBuilder
sbStringToSign.Initialize
sbStringToSign.AppendInt(sbXml.Length)
sbStringToSign.Append("POST")
sbStringToSign.Append(uri)
sbStringToSign.Append(apiVersion)
sbStringToSign.Append(timestamp)

Dim crypt As ChilkatCrypt2
crypt.Initialize("crypt")
crypt.MacAlgorithm = "hmac"
crypt.HashAlgorithm = "sha512"
crypt.EncodingMode = "base64"
'  Use your effectconnect private key here:
crypt.SetMacKeyString("PRIVATE_KEY")
req.AddHeader("SIGNATURE", crypt.MacStringENC(sbStringToSign.GetAsString))

Dim resp As ChilkatHttpResponse
resp.Initialize
success = http.HttpSReq("submit.effectconnect.com", 443, True, req, resp)
If success = False Then
    Log(http.LastErrorText)
    Return
End If


Log("response status code = " & resp.StatusCode)

'  Examine the response.  The response status code can be 200 for both errors and success.
'  The success or error is based on the XML returned in the response body.
Dim xmlResp As ChilkatXml
xmlResp.Initialize
xmlResp.LoadXml(resp.BodyStr)

Log("response body:")
Log(xmlResp.GetXml)

'  A sample response:

'  <?xml version="1.0" encoding="utf-8"?>
'  <ApiResponseContainer>
'      <Request>
'          <RequestType>Products</RequestType>
'          <RequestAction>Create</RequestAction>
'          <RequestVersion>2.0</RequestVersion>
'          <RequestIdentifier/>
'          <ProcessedAt>2019-04-18T15:28:55+02:00</ProcessedAt>
'      </Request>
'      <Response>
'          <Result>Success</Result>
'          <ProductsCreateResponseContainer>
'              <ProcessID><![CDATA[J048hgS4OkNn0JnH]]></ProcessID>
'          </ProductsCreateResponseContainer>
'      </Response>
'  </ApiResponseContainer>

'  Parsing the response...
Dim tagPath As String
Dim RequestType As String
Dim RequestAction As String
Dim RequestVersion As String
Dim ProcessedAt As String
Dim Result As String
Dim ProcessID As String

RequestType = xmlResp.GetChildContent("Request|RequestType")
RequestAction = xmlResp.GetChildContent("Request|RequestAction")
RequestVersion = xmlResp.GetChildContent("Request|RequestVersion")
ProcessedAt = xmlResp.GetChildContent("Request|ProcessedAt")
Result = xmlResp.GetChildContent("Response|Result")
ProcessID = xmlResp.GetChildContent("Response|ProductsCreateResponseContainer|ProcessID")