Search code examples
ajaxxmlxmlhttprequestrokubrightscript

How to make api request to some server in roku


I am very much new in working with roku and roku specific language( BasicScript ). I need to make api calls to some server to get the channels. I am not understanding how to do it in roku. Please suggest.


Solution

  • here is the direct way to do it without having to rely on the syntax of the code libraries that are included in your SDK:

    Blocking Method (all program execution stops until the URL is retrieved):

    url="http://myserver.com/anExampleQuery?getmydata&apikey=AX5GZP5LL45D987D0&format=XML"
    xfer=createobject("roURLTransfer")
    xfer.seturl(url)
    data=xfer.gettostring()
    

    Non Blocking Method where you can do other things while waiting for data:

    url="http://myserver.com/anExampleQuery?getmydata&apikey=AX5GZP5LL45D987D0&format=XML"
    xfer=createobject("roURLTransfer")
    xfer.seturl(url)
    port=createobject("roMessagePort")
    xfer.setport(port)
    timer=createobject("roTimeSpan")
    timer.mark()
    xfer.asyncgettostring()
    while true    
        msg=wait(100,port) '100 millisecond pause
        if type(msg)="roUrlEvent" then
    
            if msg.getresponsecode()=200 then
                data=msg.getstring()
                headers=msg.getresponseheadersarray()
                exit while
            else
                xfer.asynccancel()
            end if
        else
            print "do something useful while we wait for data"   
        end if
        if timer.totalmilliseconds() > 500 then
            ?"timeout exceeded"
            exit while
        end if
    end while
    print "***************HEADERS******************"
    for each header in headers
    print header
    end for
    print "***************DATA*********************"
    print data
    print "****************************************"