Roku: roUrlTransfer с Dynami c URL возвращает пустое - PullRequest
1 голос
/ 18 апреля 2020

Я строю канал, который вызывает два xml файла, первый содержит ссылки на содержимое, которое будет отображаться в каждой строке, первый вызов работает нормально, потому что я использую stati c url

url = CreateObject("roUrlTransfer")
url.SetUrl("http://theRowsContents.xml")
rsp = url.GetToString()

responseXML = ParseXML(rsp)
responseXML = responseXML.GetChildElements()
'responseArray = responseXML.GetChildElements()

result = []

for each xmlItem in responseXML      
    item = {}
    item.TITLE = xmlItem.getAttributes().title
    item.ContentList = GetApiArray(xmlItem.getAttributes().feed)
    result.push(item)
end for

но когда я передаю второй URL для извлечения содержимого, оно не будет работать

Function GetApiArray(url as String)
    newXfer = CreateObject("roUrlTransfer")
    newXfer.SetUrl(url)
    response = newXfe.GetToString()

    responseXML = ParseXML(response)
    responseXML = responseXML.GetChildElements()
    responseArray = responseXML.GetChildElements()

, и это журнал

> Suspending threads... Thread selected:  0*   pkg:/source/main.brs(112)
> responseXML = responseXML.GetChildElements()
> 
> Current Function: 106:  Function GetApiArray(url as String) 107:     
> newXfer = CreateObject("roUrlTransfer") 108:      newXfer.SetUrl(url)
> 109:      response = newXfer.GetToString() 110:   111:     
> responseXML = ParseXML(response) 112:*     responseXML =
> responseXML.GetChildElements() 113:      responseArray =
> responseXML.GetChildElements() 114:   115:      result = [] 116:  
> 'Dot' Operator attempted with invalid BrightScript Component or
> interface reference. (runtime error &hec) in pkg:/source/main.brs(112)
> 112:     responseXML = responseXML.GetChildElements() Backtrace:
> #2  Function getapiarray(url As String) As Dynamic    file/line: pkg:/source/main.brs(112)
> #1  Function makerequest() As Dynamic    file/line: pkg:/source/main.brs(54)
> #0  Function runuserinterface() As Void    file/line: pkg:/source/main.brs(15) Local Variables: url              roString
> (2.1 was String) refcnt=2 val:"https://contentsFeed.xml" global       
> Interface:ifGlobal m                roAssociativeArray refcnt=4
> count:1 newxfer          roUrlTransfer refcnt=1 response        
> roString (2.1 was String) refcnt=1 val:"" responsexml      Invalid
> responsearray    <uninitialized> result       <uninitialized> xmlitem 
> <uninitialized> itemaa           <uninitialized> item            
> <uninitialized> Threads: ID    Location                               
> Source Code  0*   pkg:/source/main.brs(112)               responseXML
> = responseXML.GetChildElements()   *selected
> 
> Brightscript Debugger>

, так что я делаю неправильно?

1 Ответ

0 голосов
/ 18 апреля 2020

У вас есть опечатка в строке 109;)

Вы используете newXfe вместо newXfer.

См. Ошибку:

' Оператор Dot попытался использовать недопустимый компонент BrightScript или ссылку на интерфейс. (ошибка выполнения и он c) в файле pkg: /source/main.brs (109)

Это потому, что newXfe неинициализирован (очевидно).

...