3

来自 roUrlTransfer 对象的 AsyncPostFromString 方法生成一个超时为 30 秒的 CURL 请求。

IE

port = CreateObject ("roMessagePort")
ut = CreateObject ("roUrlTransfer")
ut.setMessagePort(port)
ut.AsyncPostFromString(data)

有谁知道是否有任何方法可以使用 Roku SDK 更改 CURL 超时的默认值?

4

2 回答 2

0

无法更改请求的默认超时。但您可以在异步请求处理程序中管理超时时手动执行此操作。大多数应用程序应该使用异步请求,所以无论如何你都会做类似的检查。还请务必调用asyncCancel()清理roUrlTransfer请求。

' given a url that will timeout
url = "http://www.mocky.io/v2/5a75d6902e000068006ab21a?mocky-delay=1000ms"

' and a timeout in ms
timeout = 100

' create a roUrlTransfer for the request
urlTransfer = CreateObject("roUrlTransfer")
urlTransfer.setUrl(url)
port = CreateObject("roMessagePort")
urlTransfer.setMessagePort(port)

' request the URL
if urlTransfer.asyncGetToString()
    event = wait(timeout, port)
    if type(event) = "roUrlEvent"
        print "urlTransfer success"

    else if event <> invalid
        print "event emitted: " + type(event)

    else
        print "urlTransfer timed out"
        urlTransfer.asyncCancel()

        ' alternatively: measure the request time against timeout using roTimeSpan
    end if
end if

roTimeSpan如代码中所述,如果您正在处理等待循环中的其他请求(在等待超时与请求超时不同的情况下),您将需要使用 an 来测量超时。

于 2018-02-03T16:09:51.750 回答
0

我不这么认为 - 或者在https://sdkdocs.roku.com/display/sdkdoc/ifUrlTransfer的某处会提到这样的选项- 就像有一个设置最低传输速率的调用一样。

但是请尝试在 Roku 的 dev.forum http://forums.roku.com/viewforum.php?f=34中提出问题- 他们可能会添加该功能。

于 2016-06-10T06:57:48.850 回答