Chilkat HOME .NET Core C# Android™ AutoIt C C# C++ Chilkat2-Python CkPython Classic ASP DataFlex Delphi ActiveX Delphi DLL Go Java Lianja Mono C# Node.js Objective-C PHP ActiveX PHP Extension Perl PowerBuilder PowerShell PureBasic Ruby SQL Server Swift 2 Swift 3,4,5... Tcl Unicode C Unicode C++ VB.NET VBScript Visual Basic 6.0 Visual FoxPro Xojo Plugin
(Visual FoxPro) Xero API through an HTTP ProxyThis example demonstrates connecting through an HTTP proxy w/ 2-legged OAuth for a Xero private application. This example requires Chilkat v9.5.0.64 or later
LOCAL loRest LOCAL loSocket LOCAL lnBTls LOCAL lnPort LOCAL lnMaxWaitMs LOCAL lnSuccess LOCAL lcConsumerKey LOCAL lcConsumerSecret LOCAL loPfx LOCAL loPrivKeyFromPfx LOCAL loPrivKeyFromPem LOCAL loOauth1 LOCAL loSbXml LOCAL lnBAutoTrim LOCAL loXml LOCAL lnRecordCount LOCAL i * This example requires Chilkat v9.5.0.64 or later * This sample code would typically be placed in a subroutine or function * where the rest object is passed by reference. * It does the OAuth1 setup and makes the initial connection. loRest = CreateObject('Chilkat_9_5_0.Rest') * Connect to the Xero server through an HTTP proxy, and then tell the REST object * to use the socket connection. loSocket = CreateObject('Chilkat_9_5_0.Socket') * Set the HTTP proxy domain or IP address, and port. loSocket.HttpProxyHostname = "192.168.1.100" loSocket.HttpProxyPort = 8088 * Connect through the HTTP proxy.. lnBTls = 1 lnPort = 443 lnMaxWaitMs = 5000 lnSuccess = loSocket.Connect("api.xero.com",lnPort,lnBTls,lnMaxWaitMs) IF (lnSuccess <> 1) THEN ? "Connect Failure Error Code: " + STR(loSocket.ConnectFailReason) ? loSocket.LastErrorText RELEASE loRest RELEASE loSocket CANCEL ENDIF * Use the HTTP proxied TLS connection: lnSuccess = loRest.UseConnection(loSocket,1) IF (lnSuccess <> 1) THEN ? loRest.LastErrorText RELEASE loRest RELEASE loSocket CANCEL ENDIF * OK, we're connected. * The UseConnection method has an internal reference to the underlying/internal socket. * The application can does not need to keep its socket object in existence. * ----------------------------------------------------------------- * Now setup the OAuth1 authenticator.. lcConsumerKey = "XERO_PRIVATE_APP_KEY" lcConsumerSecret = "XERO_PRIVATE_APP_SECRET" * Let's get our private key from our PFX (password protected), or the PEM (unprotected). * You can decide which to use. Either is OK, although I would recommend keeping your * private keys in a PFX and not in an unprotected PEM. loPfx = CreateObject('Chilkat_9_5_0.Pfx') lnSuccess = loPfx.LoadPfxFile("qa_data/certs/xero_private_app/public_privatekey.pfx","PFX_PASSWORD") IF (lnSuccess <> 1) THEN ? loPfx.LastErrorText RELEASE loRest RELEASE loSocket RELEASE loPfx CANCEL ENDIF loPrivKeyFromPfx = loPfx.GetPrivateKey(0) IF (loPfx.LastMethodSuccess <> 1) THEN ? loPfx.LastErrorText RELEASE loRest RELEASE loSocket RELEASE loPfx CANCEL ENDIF * Or we can load from a PEM.. loPrivKeyFromPem = CreateObject('Chilkat_9_5_0.PrivateKey') lnSuccess = loPrivKeyFromPem.LoadPemFile("qa_data/certs/xero_private_app/privatekey.pem") IF (lnSuccess <> 1) THEN ? loPrivKeyFromPem.LastErrorText RELEASE loRest RELEASE loSocket RELEASE loPfx RELEASE loPrivKeyFromPem CANCEL ENDIF * Note: There are many other means for loading a private key, including * from other formats and directly from memory (i.e. not file-based). loOauth1 = CreateObject('Chilkat_9_5_0.OAuth1') loOauth1.ConsumerKey = lcConsumerKey loOauth1.ConsumerSecret = lcConsumerSecret loOauth1.Token = lcConsumerKey loOauth1.TokenSecret = lcConsumerSecret loOauth1.SignatureMethod = "RSA-SHA1" loOauth1.SetRsaKey(loPrivKeyFromPfx) RELEASE loPrivKeyFromPfx * Install the OAuth1 authenticator. loRest.SetAuthOAuth1(loOauth1,0) ? "OK, the Xero OAuth1 is initialized and the REST object is ready to make REST API calls.." * ----------------------------------------------------------------- * Make a call to verify that OAuth1 through an HTTP proxy works.. * Get the full list of contacts. loSbXml = CreateObject('Chilkat_9_5_0.StringBuilder') lnSuccess = loRest.FullRequestNoBodySb("GET","/api.xro/2.0/Contacts",loSbXml) IF (lnSuccess <> 1) THEN ? loRest.LastErrorText RELEASE loRest RELEASE loSocket RELEASE loPfx RELEASE loPrivKeyFromPem RELEASE loOauth1 RELEASE loSbXml CANCEL ENDIF * A 200 response is expected for actual success. IF (loRest.ResponseStatusCode <> 200) THEN ? loSbXml.GetAsString() RELEASE loRest RELEASE loSocket RELEASE loPfx RELEASE loPrivKeyFromPem RELEASE loOauth1 RELEASE loSbXml CANCEL ENDIF * Iterate over the contacts.. lnBAutoTrim = 0 loXml = CreateObject('Chilkat_9_5_0.Xml') loXml.LoadSb(loSbXml,lnBAutoTrim) loXml.SaveXml("qa_cache/xero_contacts.xml") * How many records exist? lnRecordCount = loXml.NumChildrenAt("Contacts") ? "numRecords = " + STR(lnRecordCount) i = 0 DO WHILE i < lnRecordCount loXml.I = i ? "ContactID: " + loXml.GetChildContent("Contacts|Contact[i]|ContactID") i = i + 1 ENDDO RELEASE loRest RELEASE loSocket RELEASE loPfx RELEASE loPrivKeyFromPem RELEASE loOauth1 RELEASE loSbXml RELEASE loXml |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.