Skip to content

thinBasic_MSXML2 enables thinBasic programmer to use selected MS XML objects

Notifications You must be signed in to change notification settings

ThinBASIC/thinBasic_MSXML2

Repository files navigation

thinBasic_MSXML2

thinBasic_MSXML2 enables thinBasic programmer to use selected MS XML 2.0 objects.

For user

Implemented classes

ServerXMLHTTPRequest module class implements MS IServerXMLHTTPRequest interface.

DOMDocument module class implements MS IXMLDOMDocument interface.

For developer

Language

PowerBASIC for Windows, v10.04

  • Default compiler Win32 API headers used
  • COM interfaces generated by PowerBASIC COM Browser

Dependencies

Clone module_core in a way it is placed in the same root directory as this project.

Script examples using thinBasic_MSXML2 module

Connect and download some JSONs

  Uses "MSXML2"
  Uses "Console"

  '---Reference for Fake JSon: http://jsonplaceholder.typicode.com/
  
  Dim oHTTP As new ServerXMLHTTPRequest
  printl "IsObject:", oHTTP.IsObject
  printl "IsNothing:", oHTTP.IsNothing

  oHTTP.SetTimeOuts(60000, 60000, 60000, 60000)
  '------------------------------------------------------------
  ' Users
  '------------------------------------------------------------
  printl "---Users---" in %CColor_fYellow
  oHTTP.Open("GET", "http://jsonplaceholder.typicode.com/users", %FALSE)
  oHTTP.Send
  PrintL "Status:", oHTTP.Status, "(" & oHTTP.Statustext & ")"
  PrintL oHTTP.ResponseText

  '------------------------------------------------------------
  ' Single Post
  '------------------------------------------------------------
  printl "---Single Post---" in %CColor_fYellow
  oHTTP.Open("GET", "http://jsonplaceholder.typicode.com/posts/1", %FALSE)
  oHTTP.Send
  PrintL "Status:", oHTTP.Status, "(" & oHTTP.Statustext & ")"
  PrintL oHTTP.ResponseText

  '------------------------------------------------------------
  ' All Posts
  '------------------------------------------------------------
  printl "---All Posts---" in %CColor_fYellow
  oHTTP.Open("GET", "http://jsonplaceholder.typicode.com/posts", %FALSE)
  oHTTP.Send
  PrintL "Status:", oHTTP.Status, "(" & oHTTP.Statustext & ")"
  PrintL oHTTP.ResponseText
  
  PrintL
  WaitKey

Connect to a bank exposing some REST API and make requests sending headers

  Uses "MSXML2"
  Uses "Console"
  uses "File"

  Dim oHTTP As new ServerXMLHTTPRequest
  oHTTP.SetTimeOuts(60000, 60000, 60000, 60000)

  '------------------------------------------------------------
  ' Get account movements in Sync mode
  '------------------------------------------------------------
  printl "---Get account movements Sync---" in %CColor_fYellow
  oHTTP.Open("POST", "https://sandbox.platfr.io/api/banking/v1/accounts/movementslist")', %FALSE)
  oHTTP.setRequestHeader ("Content-Type", "application/json; charset=utf-8")
  oHTTP.Send(" {""accountNumber"": ""7652XX380XX18"", ""startdate"": ""01/01/2017"", ""enddate"": ""06/01/2017""} ")
  PrintL "Status:", oHTTP.Status, "(" & oHTTP.Statustext & ")"
  PrintL oHTTP.ResponseText
  file_save(app_sourcepath & "AccountMovements.json", oHTTP.ResponseText)
  
  printl oHTTP.getAllResponseHeaders
  printl "Content-Type:", oHTTP.getResponseHeader("Content-Type")
  

  PrintL

  '------------------------------------------------------------
  ' Get account movements in ASync.
  ' With ASync you need to test oHTTP.ReadyState till it is %ServerXMLHTTP_COMPLETED
  '------------------------------------------------------------
  printl "---Get account movements ASync---" in %CColor_fYellow
  oHTTP.Open("POST", "https://sandbox.platfr.io/api/banking/v1/accounts/movementslist", %TRUE)
  oHTTP.setRequestHeader ("Content-Type", "application/json; charset=utf-8")
  oHTTP.Send(" {""accountNumber"": ""7652XX380XX18"", ""startdate"": ""01/01/2017"", ""enddate"": ""06/01/2017""} ")
  PrintL
  print "State:"
  while oHTTP.ReadyState <> %ServerXMLHTTP_COMPLETED
    print "[" & oHTTP.ReadyState & "]"
    sleep 40
  Wend
  PrintL
  PrintL "Status:", oHTTP.Status, "(" & oHTTP.Statustext & ")"
  PrintL oHTTP.ResponseText

  PrintL
  
  '------------------------------------------------------------
  ' Get account balance in Sync mode
  '------------------------------------------------------------
  printl "'---Get account balance Sync---" in %CColor_fYellow
  oHTTP.Open("POST", "https://sandbox.platfr.io/api/banking/v1/balance/getbalance", %FALSE)
  oHTTP.setRequestHeader ("Content-Type", "application/json; charset=utf-8")
  oHTTP.Send(" {""accountNumber"": ""7652XX380XX18""} ")
  PrintL "Status:", oHTTP.Status, "(" & oHTTP.Statustext & ")"
  PrintL oHTTP.ResponseText
  
  WaitKey

About

thinBasic_MSXML2 enables thinBasic programmer to use selected MS XML objects

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published