如何向 roku 中的某些服务器发出 api 请求

Posted

技术标签:

【中文标题】如何向 roku 中的某些服务器发出 api 请求【英文标题】:How to make api request to some server in roku 【发布时间】:2012-03-14 22:14:23 【问题描述】:

我在使用 roku 和 roku 特定语言 (BasicScript) 方面非常陌生。我需要对某些服务器进行 api 调用以获取频道。我不明白如何在 roku 中做到这一点。请提出建议。

【问题讨论】:

【参考方案1】:

这是无需依赖 SDK 中包含的代码库语法的直接方法:

阻塞方法(所有程序执行停止,直到检索到 URL):

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

非阻塞方法,您可以在等待数据的同时做其他事情:

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 "****************************************"

【讨论】:

我收到以下错误 BRIGHTSCRIPT: ERROR: roUrlTransfer: class PLUGIN|MARKUP on thread RENDER: 您好,@alphablender 我需要在xfer.asynccancel() 块中显示一个对话框,但任务节点不支持对话框。有什么方法可以显示对话框。我尝试了很多方法使用 getparent() 但还没有显示。 @NikunjChaklasiya 最好是创建一个新问题,简短的回答是使用任务节点更新的字段的观察者来打开或关闭对话框。【参考方案2】:
http=NewHttp("http://server address")
rsp = http.GetToStringWithRetry()
print rsp 'To check the response text from server

【讨论】:

这仅在您包含 SDK 中的 URL 实用程序文件之一时才有效,例如 TwitterOauth 示例中的 url.brs。 url.brs 是一个封装了 roURLTransfer 对象的 brightscript 函数库,它在执行时间方面增加了一点点开销。

以上是关于如何向 roku 中的某些服务器发出 api 请求的主要内容,如果未能解决你的问题,请参考以下文章

在后台接收静默推送时无法向 Alamofire 发出请求

如何使用 jQuery 向 django 服务器发出请求以刷新页面上的信息

iOS 9 应用程序关闭时如何向服务器发出请求?

如何从后端向用户本地主机上的另一台服务器发出请求

如何使用客户端Javascript向Ldap发出请求?

如何使用 Angular2 向外部 API 发出 POST 请求?