BrightScript Debugger>
Current Function:
019: testRequest = CreateObject("roUrlTransfer")
020:* testRequest.SetUrl("http://blog.roku.com/developer")
021:
'Dot' Operator attempted with invalid BrightScript Component or interface reference. (runtime error &hec) in ...AAAAy0HwSV/pkg:/source/categories.brs(20)
020: testRequest.SetUrl("http://blog.roku.com/developer")
Backtrace:
#1 Function showcategories() As Void
file/line: ...AAAAy0HwSV/pkg:/source/categories.brs(20)
#0 Function init() As Void
file/line: ...AAAAy0HwSV/pkg:/source/categories.brs(9)
Local Variables:
global rotINTERFACE:ifGlobal
m roAssociativeArray refcnt=4 count:4
testrequest Invalid
I for one am stumped. It shouldn’t happen. Typically you’d get invalid from createObject if it failed to create what’s requested. I thought maybe you created too many URLs - then i typed some code in console to create 10,000 roUrlTransfer but canceled it out of patience - still it created 3569 objects just fine:
BrightScript Debugger> a = [] : for ii=1 to 10000 : a.push(CreateObject("roUrlTransfer")) : next
^C
BREAK (runtime error &hf8) in $LIVECOMPILE(73)
BrightScript Debugger> ? ii, a.count()
3570 3569
BrightScript Debugger> ? a[3500]
<Component: roUrlTransfer>
BrightScript Debugger> a[3500].SetUrl("http://blog.roku.com/developer")
BrightScript Debugger> bscs
roArray: 14
roAssociativeArray: 106
roByteArray: 1
roGlobal: 1
roImageCanvas: 1
roInt: 2
roList: 8
roMessagePort: 8
roString: 187
roUrlEvent: 8
roUrlTransfer: 3579
Total # components: 3915
How does it act if you type in console your 2-line snippet, after the run was interrupted by the error?
I’ve already discovered the legacy regular roku interface code and have coded my channel in that. Works great!!! No XML nonsense either. Sure the resolution is a bit old-school, but it works
In SceneGraph, all web requests have to be made from a Task node. You cannot make web requests from the main UI thread, which is the context in which init() runs.
@NicholasStokes , if you print “request” you’ll probably see that it’s invalid. You can’t use roUrlTransfer in the render thread I’m going to assume is what you’re trying to do. You have to set up a task or use it in the main thread.