1

我正在开发一个显示 MJPEG 视频的 Roku 应用程序。这有点棘手,因为据我所知,在 Brightscript 中并没有真正的方法来处理 HTTP 上的通用流。我所做的工作是使用 roUrlTransfer.GetToFile 启动下载。然后我可以处理随着 MJPEG 不断下载而创建的 tmp 文件。我必须每隔一段时间清理文件并重新启动传输以避免溢出存储空间,但它运行良好。

我遇到的问题是我需要支持的来源之一需要我发布一些会话信息才能拉下我需要显示的 MJPEG。据我所知, roUrlTransfer 没有提供 POST 字符串并将结果保存为文件的方法。有没有办法做到这一点,我没有看到?

4

3 回答 3

2

对于这个问题,我很好的解决方法是将 url 设置为普通的GET请求(查询字符串中的参数)并将请求方法覆盖为POST。然后您可以使用GetToString()来返回请求数据。请参见下面的示例:

conn = CreateObject("roUrlTransfer")
url = "http://somedomain.com/endpoint?param1=foo&param2=bar"
conn.SetUrl(url)
conn.SetRequest("POST")    'do not forget to overwrite http method
data = conn.GetToString()

编辑:我刚刚意识到我的回答没有回答你的问题。无论如何,我不会删除它,因为它可能是其他人的答案。

于 2015-08-07T10:47:28.330 回答
0

目前,唯一的方法是使用 ifUrlTransfer.AsyncPostFromFiletoFile(sourcefile,DestFile) 然后您可以从文件系统中读取响应正文。如果下载的是媒体文件,您应该确保它具有正确的扩展名,因为 Roku 倾向于根据扩展名决定什么媒体类型。

于 2014-12-27T03:20:15.793 回答
0

最好的办法是在 forums.roku.com 上的开发者论坛上提问

我相信我听说要从帖子中获取正文,您必须使用帖子的异步版本, http://sdkdocs.roku.com/display/sdkdoc/ifUrlTransfer#ifUrlTransfer-AsyncPostFromStringrequestasStringasBoolean

随着呼叫的进行,您将获得roUrlEvents ,甚至可能不必将 MJPEG 保存到 tmp: 来处理它(可以在内存中切片和切块。tmp: 无论如何都是 RAM 驱动器)

于 2014-11-04T22:51:17.683 回答