How to make get and post a request in Roku scenegraph?

Introduction

This blog, we will learn how to communicate with web service in Roku and also we will see how to interact with post and get API call.

The roUrlTransfer BrightScript component used to communicate with remote servers.

Using this component you can make get and post request and read data returned in the HTTP response.

You can make the request either synchronously or asynchronously.

    request = CreateObject("roUrlTransfer")
    request.SetUrl("http://blog.roku.com/developer")
    html = request.GetToString()

Make a request to an url with parameters:

Function MakeRequest(src As String, params As Object) As Object
  request = CreateObject("roUrlTransfer")
  port = CreateObject("roMessagePort")
  request.setMessagePort(port)
  url = AppendParamsToUrl(src, params)

  if url.InStr(0, "https") = 0
    request.SetCertificatesFile("common:/certs/ca-bundle.crt")
    request.AddHeader("X-Roku-Reserved-Dev-Id", "")
    request.InitClientCertificates()
  end if

  ' print url ' uncomment to debug
  request.SetUrl(url)

  if request.AsyncGetToString()
    while true
      msg = wait(0, port)
      if type(msg) = "roUrlEvent"
        code = msg.GetResponseCode()
        if code = 200
          response = ParseJson(msg.GetString())
          return response
        else
          return invalid
        end if
        exit while
      else if event = invalid
        request.AsyncCancel()
      end if
    end while
  end if

  return invalid
End Function            

Make a request to an URL with parameters POST

Function MakeDeleteRequest(src As String, params As Object) As Boolean
request = CreateObject("roUrlTransfer")
request.SetRequest("DELETE")
port = CreateObject("roMessagePort")
request.setMessagePort(port)
url = AppendParamsToUrl(src, params)

if url.InStr(0, "https") = 0
request.SetCertificatesFile("common:/certs/ca-bundle.crt")
request.AddHeader("X-Roku-Reserved-Dev-Id", "")
request.InitClientCertificates()
end if

' print url ' uncomment to debug
request.SetUrl(url)

if request.AsyncGetToString()
while true
msg = wait(0, port)
if type(msg) = "roUrlEvent"
code = msg.GetResponseCode()
if code = 200 or code = 201 or code = 202 or code = 203 or code = 204
print "Success"
return true
end if
exit while
else if event = invalid
request.AsyncCancel()
end if
end while
end if

print "Error"
return false
End Function

 

Make a request to an URL with parameters PUT

Function MakePutRequest(src As String, params As Object) As Object
request = CreateObject("roUrlTransfer")
request.SetRequest("PUT")
port = CreateObject("roMessagePort")
request.setMessagePort(port)
url = AppendParamsToUrl(src, params)
print "URL: "; url

if url.InStr(0, "https") = 0
request.SetCertificatesFile("common:/certs/ca-bundle.crt")
request.AddHeader("X-Roku-Reserved-Dev-Id", "")
request.InitClientCertificates()
end if

' print url ' uncomment to debug
request.SetUrl(url)

if request.AsyncGetToString()
while true
msg = wait(0, port)
if type(msg) = "roUrlEvent"
code = msg.GetResponseCode()
if code = 200 or code = 201 or code = 202 or code = 203 or code = 204
print "Success"
response = ParseJson(msg.GetString())
return response
'return true
end if
exit while
else if event = invalid
request.AsyncCancel()
end if
end while
end if

print "Error"
return invalid
'return false
End Function

Make a request to an url with parameters POST

Function MakePostRequest(src As String, params As Object) As Object
request = CreateObject("roUrlTransfer")
port = CreateObject("roMessagePort")
request.setMessagePort(port)
url = src
' url = AppendParamsToUrl(src, params)

bodyData = paramsToString(params)

if url.InStr(0, "https") = 0
request.SetCertificatesFile("common:/certs/ca-bundle.crt")
request.AddHeader("X-Roku-Reserved-Dev-Id", "")
request.InitClientCertificates()
end if

' print url ' uncomment to debug
request.SetUrl(url)

if request.AsyncPostFromString(bodyData)
while true
msg = wait(0, port)
if type(msg) = "roUrlEvent"
code = msg.GetResponseCode()
if code = 200 or code = 201
response = ParseJson(msg.GetString())
return response
end if
exit while
else if event = invalid
request.AsyncCancel()
end if
end while
end if

return invalid
End Function

Useful functions while make web Request :

function paramsToString(obj as Object) as String
result = ""

for each i in obj
result = result + i + "=" + obj[i] + "&"
end for

return result
end function
Function AppendParamsToUrl(src As String, params As Object) As String
url = src
args = params
request = CreateObject("roUrlTransfer")

if args <> invalid and args.count() > 0
for each a in args
if url.InStr(0, "?") = -1
separator = "?"
else
separator = "&"
end if
url = url + separator + request.escape(a.tostr()) + "=" + request.escape(args[a].tostr())
end for
end if

return url
End Function

 

Function AppendAppKeyToParams(params As Object) As Object
newParams = params

appKey = {
app_key: GetApiConfigs().app_key
}
newParams.Append(appKey)

return newParams
End Function

Leave a comment

Design a site like this with WordPress.com
Get started
search previous next tag category expand menu location phone mail time cart zoom edit close