SQL Server
SQL Server
Shippo Validate Global Address
See more Shippo Examples
Demonstrates how to validate a global address.Chilkat SQL Server Downloads
-- Important: See this note about string length limitations for strings returned by sp_OAMethod calls.
--
CREATE PROCEDURE ChilkatSample
AS
BEGIN
DECLARE @hr int
-- Important: Do not use nvarchar(max). See the warning about using nvarchar(max).
DECLARE @sTmp0 nvarchar(4000)
DECLARE @success int
SELECT @success = 0
-- This example assumes the Chilkat API to have been previously unlocked.
-- See Global Unlock Sample for sample code.
DECLARE @http int
EXEC @hr = sp_OACreate 'Chilkat.Http', @http OUT
IF @hr <> 0
BEGIN
PRINT 'Failed to create ActiveX component'
RETURN
END
-- Implements the following CURL command:
-- curl https://api.goshippo.com/addresses/ \
-- -H "Authorization: ShippoToken <API_TOKEN>" \
-- -d name="Shawn Ippotle" \
-- -d company="Shippo" \
-- -d street1="Kortrijksesteenweg 1005" \
-- -d city="Gent" \
-- -d zip=9000 \
-- -d country="BE" \
-- -d email="shippotle@goshippo.com"\
-- -d validate=true
DECLARE @req int
EXEC @hr = sp_OACreate 'Chilkat.HttpRequest', @req OUT
EXEC sp_OASetProperty @req, 'HttpVerb', 'POST'
EXEC sp_OASetProperty @req, 'Path', '/addresses/'
EXEC sp_OASetProperty @req, 'ContentType', 'application/x-www-form-urlencoded'
EXEC sp_OAMethod @req, 'AddParam', NULL, 'name', 'Shawn Ippotle'
EXEC sp_OAMethod @req, 'AddParam', NULL, 'company', 'Shippo'
EXEC sp_OAMethod @req, 'AddParam', NULL, 'street1', 'Kortrijksesteenweg 1005'
EXEC sp_OAMethod @req, 'AddParam', NULL, 'city', 'Gent'
EXEC sp_OAMethod @req, 'AddParam', NULL, 'zip', '9000'
EXEC sp_OAMethod @req, 'AddParam', NULL, 'country', 'BE'
EXEC sp_OAMethod @req, 'AddParam', NULL, 'email', 'shippotle@goshippo.com'
EXEC sp_OAMethod @req, 'AddParam', NULL, 'validate', 'true'
EXEC sp_OAMethod @req, 'AddHeader', NULL, 'Authorization', 'ShippoToken <API_TOKEN>'
DECLARE @resp int
EXEC @hr = sp_OACreate 'Chilkat.HttpResponse', @resp OUT
EXEC sp_OAMethod @http, 'HttpReq', @success OUT, 'https://api.goshippo.com/addresses/', @req, @resp
IF @success = 0
BEGIN
EXEC sp_OAGetProperty @http, 'LastErrorText', @sTmp0 OUT
PRINT @sTmp0
EXEC @hr = sp_OADestroy @http
EXEC @hr = sp_OADestroy @req
EXEC @hr = sp_OADestroy @resp
RETURN
END
DECLARE @sbResponseBody int
EXEC @hr = sp_OACreate 'Chilkat.StringBuilder', @sbResponseBody OUT
EXEC sp_OAMethod @resp, 'GetBodySb', @success OUT, @sbResponseBody
DECLARE @jResp int
EXEC @hr = sp_OACreate 'Chilkat.JsonObject', @jResp OUT
EXEC sp_OAMethod @jResp, 'LoadSb', @success OUT, @sbResponseBody
EXEC sp_OASetProperty @jResp, 'EmitCompact', 0
PRINT 'Response Body:'
EXEC sp_OAMethod @jResp, 'Emit', @sTmp0 OUT
PRINT @sTmp0
DECLARE @respStatusCode int
EXEC sp_OAGetProperty @resp, 'StatusCode', @respStatusCode OUT
PRINT 'Response Status Code = ' + @respStatusCode
IF @respStatusCode >= 400
BEGIN
PRINT 'Response Header:'
EXEC sp_OAGetProperty @resp, 'Header', @sTmp0 OUT
PRINT @sTmp0
PRINT 'Failed.'
EXEC @hr = sp_OADestroy @http
EXEC @hr = sp_OADestroy @req
EXEC @hr = sp_OADestroy @resp
EXEC @hr = sp_OADestroy @sbResponseBody
EXEC @hr = sp_OADestroy @jResp
RETURN
END
-- Sample JSON response:
-- (Sample code for parsing the JSON response is shown below)
-- {
-- "object_created": "2017-07-26T17:52:37.305Z",
-- "object_updated": "2017-07-26T17:52:37.351Z",
-- "object_id": "b7f9709df3914d1ca6efe4c30e7b0572",
-- "is_complete": true,
-- "validation_results": {
-- "is_valid": true,
-- "messages": [
-- {
-- "source": "Shippo Address Validator",
-- "type": "address_correction",
-- "code": "administrative_area_change",
-- "text": "The administrative area (state or province) was added or changed."
-- },
-- {
-- "source": "Shippo Address Validator",
-- "code": "geocoded_rooftop",
-- "text": "The record was geocoded down to rooftop level, meaning the point is within the property boundaries (most often the center)."
-- },
-- {
-- "source": "Shippo Address Validator",
-- "code": "premises_full",
-- "text": "The address has been verified to the Premise (House or Building) Level, which is the highest level possible with the reference data."
-- }
-- ]
-- },
-- "object_owner": "hippo@goshippo.com",
-- "name": "Hippo Shippo",
-- "company": "Shippo",
-- "street_no": "2",
-- "street1": "Unter den Linden",
-- "street2": "",
-- "street3": "",
-- "city": "Berlin",
-- "state": "",
-- "zip": "10117",
-- "country": "DE",
-- "longitude": "13.39751",
-- "latitude": "52.51785",
-- "phone": "14151234567",
-- "email": "hippo@goshippo.com",
-- "is_residential": null,
-- "metadata": "",
-- "test": false
-- }
-- Sample code for parsing the JSON response...
-- Use the following online tool to generate parsing code from sample JSON:
-- Generate Parsing Code from JSON
DECLARE @source nvarchar(4000)
DECLARE @v_type nvarchar(4000)
DECLARE @code nvarchar(4000)
DECLARE @text nvarchar(4000)
DECLARE @object_created nvarchar(4000)
EXEC sp_OAMethod @jResp, 'StringOf', @object_created OUT, 'object_created'
DECLARE @object_updated nvarchar(4000)
EXEC sp_OAMethod @jResp, 'StringOf', @object_updated OUT, 'object_updated'
DECLARE @object_id nvarchar(4000)
EXEC sp_OAMethod @jResp, 'StringOf', @object_id OUT, 'object_id'
DECLARE @is_complete int
EXEC sp_OAMethod @jResp, 'BoolOf', @is_complete OUT, 'is_complete'
DECLARE @validation_resultsIs_valid int
EXEC sp_OAMethod @jResp, 'BoolOf', @validation_resultsIs_valid OUT, 'validation_results.is_valid'
DECLARE @object_owner nvarchar(4000)
EXEC sp_OAMethod @jResp, 'StringOf', @object_owner OUT, 'object_owner'
DECLARE @name nvarchar(4000)
EXEC sp_OAMethod @jResp, 'StringOf', @name OUT, 'name'
DECLARE @company nvarchar(4000)
EXEC sp_OAMethod @jResp, 'StringOf', @company OUT, 'company'
DECLARE @street_no nvarchar(4000)
EXEC sp_OAMethod @jResp, 'StringOf', @street_no OUT, 'street_no'
DECLARE @street1 nvarchar(4000)
EXEC sp_OAMethod @jResp, 'StringOf', @street1 OUT, 'street1'
DECLARE @street2 nvarchar(4000)
EXEC sp_OAMethod @jResp, 'StringOf', @street2 OUT, 'street2'
DECLARE @street3 nvarchar(4000)
EXEC sp_OAMethod @jResp, 'StringOf', @street3 OUT, 'street3'
DECLARE @city nvarchar(4000)
EXEC sp_OAMethod @jResp, 'StringOf', @city OUT, 'city'
DECLARE @state nvarchar(4000)
EXEC sp_OAMethod @jResp, 'StringOf', @state OUT, 'state'
DECLARE @zip nvarchar(4000)
EXEC sp_OAMethod @jResp, 'StringOf', @zip OUT, 'zip'
DECLARE @country nvarchar(4000)
EXEC sp_OAMethod @jResp, 'StringOf', @country OUT, 'country'
DECLARE @longitude nvarchar(4000)
EXEC sp_OAMethod @jResp, 'StringOf', @longitude OUT, 'longitude'
DECLARE @latitude nvarchar(4000)
EXEC sp_OAMethod @jResp, 'StringOf', @latitude OUT, 'latitude'
DECLARE @phone nvarchar(4000)
EXEC sp_OAMethod @jResp, 'StringOf', @phone OUT, 'phone'
DECLARE @email nvarchar(4000)
EXEC sp_OAMethod @jResp, 'StringOf', @email OUT, 'email'
DECLARE @is_residential nvarchar(4000)
EXEC sp_OAMethod @jResp, 'StringOf', @is_residential OUT, 'is_residential'
DECLARE @metadata nvarchar(4000)
EXEC sp_OAMethod @jResp, 'StringOf', @metadata OUT, 'metadata'
DECLARE @test int
EXEC sp_OAMethod @jResp, 'BoolOf', @test OUT, 'test'
DECLARE @i int
SELECT @i = 0
DECLARE @count_i int
EXEC sp_OAMethod @jResp, 'SizeOfArray', @count_i OUT, 'validation_results.messages'
WHILE @i < @count_i
BEGIN
EXEC sp_OASetProperty @jResp, 'I', @i
EXEC sp_OAMethod @jResp, 'StringOf', @source OUT, 'validation_results.messages[i].source'
EXEC sp_OAMethod @jResp, 'StringOf', @v_type OUT, 'validation_results.messages[i].type'
EXEC sp_OAMethod @jResp, 'StringOf', @code OUT, 'validation_results.messages[i].code'
EXEC sp_OAMethod @jResp, 'StringOf', @text OUT, 'validation_results.messages[i].text'
SELECT @i = @i + 1
END
EXEC @hr = sp_OADestroy @http
EXEC @hr = sp_OADestroy @req
EXEC @hr = sp_OADestroy @resp
EXEC @hr = sp_OADestroy @sbResponseBody
EXEC @hr = sp_OADestroy @jResp
END
GO