PureBasic
PureBasic
Shippo Track Individual Shipments
See more Shippo Examples
Demonstrates how to submit an individual tracking request for a single shipment.Chilkat PureBasic Downloads
IncludeFile "CkHttp.pb"
IncludeFile "CkStringBuilder.pb"
IncludeFile "CkJsonObject.pb"
Procedure ChilkatExample()
success.i = 0
; This example assumes the Chilkat API to have been previously unlocked.
; See Global Unlock Sample for sample code.
http.i = CkHttp::ckCreate()
If http.i = 0
Debug "Failed to create object."
ProcedureReturn
EndIf
; Implements the following CURL command:
; curl https://api.goshippo.com/tracks/usps/92701902416755000000000015 \
; -H "Authorization: ShippoToken <API_TOKEN>"
CkHttp::ckSetRequestHeader(http,"Authorization","ShippoToken <API_TOKEN>")
sbResponseBody.i = CkStringBuilder::ckCreate()
If sbResponseBody.i = 0
Debug "Failed to create object."
ProcedureReturn
EndIf
success = CkHttp::ckQuickGetSb(http,"https://api.goshippo.com/tracks/usps/92701902416755000000000015",sbResponseBody)
If success = 0
Debug CkHttp::ckLastErrorText(http)
CkHttp::ckDispose(http)
CkStringBuilder::ckDispose(sbResponseBody)
ProcedureReturn
EndIf
jResp.i = CkJsonObject::ckCreate()
If jResp.i = 0
Debug "Failed to create object."
ProcedureReturn
EndIf
CkJsonObject::ckLoadSb(jResp,sbResponseBody)
CkJsonObject::setCkEmitCompact(jResp, 0)
Debug "Response Body:"
Debug CkJsonObject::ckEmit(jResp)
respStatusCode.i = CkHttp::ckLastStatus(http)
Debug "Response Status Code = " + Str(respStatusCode)
If respStatusCode >= 400
Debug "Response Header:"
Debug CkHttp::ckLastHeader(http)
Debug "Failed."
CkHttp::ckDispose(http)
CkStringBuilder::ckDispose(sbResponseBody)
CkJsonObject::ckDispose(jResp)
ProcedureReturn
EndIf
; Sample JSON response:
; (Sample code for parsing the JSON response is shown below)
; {
; "object_state": "VALID",
; "status": "SUCCESS",
; "object_created": "2014-11-29T16:31:19.512Z",
; "object_updated": "2014-11-29T16:31:19.512Z",
; "object_id": "5695ae3a5eda41ba9abdbf347fd545f3",
; "object_owner": "test@goshippo.com",
; "test": false,
; "rate": "693ea14a541f44e090291b929c171d5a",
; "tracking_number": "9102969010383081813033",
; "tracking_status": "DELIVERED",
; "eta": "2014-11-24T00:00:00Z",
; "tracking_url_provider": "https:\/\/tools.usps.com\/go\/TrackConfirmAction_input?origTrackNum=9102969010383081813033",
; "label_url": "https:\/\/shippo-delivery-east.s3.amazonaws.com\/5695ae3a5eda41ba9abdbf347fd545f3.pdf?Signature=AyiitLq2g%2F2R9fjboCTVxi5z7JQ%3D&Expires=1534873886&AWSAccessKeyId=AKIAJGLCC5MYLLWIG42A",
; "commercial_invoice_url": null,
; "messages": [
; ],
; "order": "ca760ef0099040b4a2b7feec827bca88",
; "metadata": "",
; "parcel": "e0de043b2f7f4b6d8e6f23ad69641cc1",
; "billing": {
; "payments": [
; ]
; }
; }
; Sample code for parsing the JSON response...
; Use the following online tool to generate parsing code from sample JSON:
; Generate Parsing Code from JSON
object_state.s = CkJsonObject::ckStringOf(jResp,"object_state")
status.s = CkJsonObject::ckStringOf(jResp,"status")
object_created.s = CkJsonObject::ckStringOf(jResp,"object_created")
object_updated.s = CkJsonObject::ckStringOf(jResp,"object_updated")
object_id.s = CkJsonObject::ckStringOf(jResp,"object_id")
object_owner.s = CkJsonObject::ckStringOf(jResp,"object_owner")
test.i = CkJsonObject::ckBoolOf(jResp,"test")
rate.s = CkJsonObject::ckStringOf(jResp,"rate")
tracking_number.s = CkJsonObject::ckStringOf(jResp,"tracking_number")
tracking_status.s = CkJsonObject::ckStringOf(jResp,"tracking_status")
eta.s = CkJsonObject::ckStringOf(jResp,"eta")
tracking_url_provider.s = CkJsonObject::ckStringOf(jResp,"tracking_url_provider")
label_url.s = CkJsonObject::ckStringOf(jResp,"label_url")
commercial_invoice_url.s = CkJsonObject::ckStringOf(jResp,"commercial_invoice_url")
order.s = CkJsonObject::ckStringOf(jResp,"order")
metadata.s = CkJsonObject::ckStringOf(jResp,"metadata")
parcel.s = CkJsonObject::ckStringOf(jResp,"parcel")
i.i = 0
count_i.i = CkJsonObject::ckSizeOfArray(jResp,"messages")
While i < count_i
CkJsonObject::setCkI(jResp, i)
i = i + 1
Wend
i = 0
count_i = CkJsonObject::ckSizeOfArray(jResp,"billing.payments")
While i < count_i
CkJsonObject::setCkI(jResp, i)
i = i + 1
Wend
CkHttp::ckDispose(http)
CkStringBuilder::ckDispose(sbResponseBody)
CkJsonObject::ckDispose(jResp)
ProcedureReturn
EndProcedure