Table of Contents

UrlLoader

Inherits: Object

Supported platforms:

Available since version: Gideros 2012.2.2

Description:

The UrlLoader class is used to download data from an URL. It can be used to download (and optionally save) text files, XML files, JSON files, image files or binary files, etc.
Downloaded data is delivered at event.data field of Event.COMPLETE event as string. Lua is eight-bit clean and so strings may contain characters with any numeric value, including embedded zeros. That means that you can store any binary data into a string.
HTTP Request Methods
UrlLoader supports GET, POST, PUT and DELETE methods. These are defined by these string constants:
UrlLoader.GET = "get"
UrlLoader.POST = "post"
UrlLoader.PUT = "put"
UrlLoader.DELETE = "delete"

Common uses and examples:

The example below shows downloading an image file from an URL, saving it to the documents folder and displaying it
on the stage. This example also shows downloading progress and handling errors.

local loader = UrlLoader.new("http://example.com/image.png")

local function onComplete(event)
	local out = io.open("|D|image.png", "wb")
	out:write(event.data)
	out:close()

	local b = Bitmap.new(Texture.new("|D|image.png"))
	stage:addChild(b)
end

local function onError()
	print("error")
end

local function onProgress(event)
	print("progress: " .. event.bytesLoaded .. " of " .. event.bytesTotal)
end

loader:addEventListener(Event.COMPLETE, onComplete)
loader:addEventListener(Event.ERROR, onError)
loader:addEventListener(Event.PROGRESS, onProgress)

Uploading a file

local filename = "crate.png"
local file = io.open(filename, "rb")
local contents = file:read( "*a" )
local boundary = "somerndstring"
 
local send = "--"..boundary..
			"\r\nContent-Disposition: form-data; "..
			"name="..filename.."; filename="..filename..
			"\r\nContent-type: image/png"..
			"\r\n\r\n"..contents..
			"\r\n--"..boundary.."--\r\n";
 
local headers = {
	["Content-Type"] = "multipart/form-data; boundary="..boundary,
	["Content-Length"] = #send,
}
 
local loader = UrlLoader.new("http://localhost/gideros.php", UrlLoader.POST, headers, send)
 
loader:addEventListener(Event.COMPLETE, function(e)
	print(e.data)
end)

Methods, events and properties: