Hi,
Newbie here with a question. I am trying to control kodi on my raspberry with jsonrpc.
It works in the windows emulator, but not in the OSX emulator.
It does not work on an Android device, did not try iOS devices.
When I run the code below on my windows emulator everything works fine.
But on the OSX emulator I get "Invalid Parameter: URL argument was malformed URL.
I tried to encode the query part and the whole url, but that does not work on both emulators (string:urlEncode()).
What should I do to get this working in the OSX emulator (I assume it would also work on an iOS and android device after that).
request example (all requests get malformed url on OSX, all work in windows)
local url = 'http://kodi:kodi@'..xbmcsysteem..'/' query = 'jsonrpc?request={"id":"GetPlayers","jsonrpc":"2.0","method":"Player.GetActivePlayers"}' network.request( url..query, "GET", handleResponse )
Full code.
local xbmcsysteem = "ipnumber:port" local ep = "smb://TS559PRO/All/1 TV en Film/1 TV/Under the Dome/Under.the.Dome.S03E13.1080p.HDTV.X264-DIMENSION.mkv" local url = 'http://userid:password@'..xbmcsysteem..'/' local query local json = require( "json" ) local totalepisodes = {} local function handleResponse( event ) if not event.isError then local response = json.decode( event.response ) if (response.id == "Play") then print( event.response ) end if (response.id == "GetPlayers") then print( event.response ) end if (response.id == "Stop") then print( event.response ) end else print( "Error" ) end return end local widget = require( "widget" ) -- Function to handle button events local function handleButtonEvent( event ) if ( "ended" == event.phase ) then print( event.target.id.." was pressed and released" ) if (event.target.id == "buttonPlay") then query = 'jsonrpc?request={"id":"Play","jsonrpc": "2.0", "method":"Player.Open","params":{"item":{"file":"'..ep..'"}}}' network.request( url..query, "GET", handleResponse ) end if (event.target.id == "buttonStop") then network.request( 'http://kodi:kodi@'..xbmcsysteem..'/jsonrpc?request={"id":"Stop","jsonrpc": "2.0", "method": "Player.Stop", "params": { "playerid": 1 } }' , "GET", handleResponse ) end if (event.target.id == "buttonGetPlayers") then query = 'jsonrpc?request={"id":"GetPlayers","jsonrpc":"2.0","method":"Player.GetActivePlayers"}' network.request( url..query, "GET", handleResponse ) end end end -- Create the widget local buttonPlay = widget.newButton { left = 100, top = 200, id = "buttonPlay", label = "Play", fontSize = 36, labelColor = { default={ 1, 1, 1 }, over={ 0,5, 0,5, 0, 0.5 } }, onEvent = handleButtonEvent } local buttonStop = widget.newButton { left = 100, top = 300, id = "buttonStop", label = "Stop", fontSize = 36, labelColor = { default={ 1, 1, 1 }, over={ 0,5, 0,5, 0, 0.5 } }, onEvent = handleButtonEvent } local buttonGetPlayers = widget.newButton { left = 100, top = 400, id = "buttonGetPlayers", label = "GetPlayers", fontSize = 36, labelColor = { default={ 1, 1, 1 }, over={ 0,5, 0,5, 0, 0.5 } }, onEvent = handleButtonEvent }