Difference between revisions of "HTTP (API)"

From ComputerCraft Wiki
Jump to: navigation, search
Line 48: Line 48:
 
http.get("http://example.com/", headers)</nowiki>
 
http.get("http://example.com/", headers)</nowiki>
 
}}
 
}}
 +
=== Caution ===
 +
You '''must''' either pass a ''string'' or ''nil'' as the second argument of http.request(). It will silently fail if you try to pass a header table as the second argument.
 +
<pre>
 +
http.request("http://example.com/", headers) -- This will produce a normal GET request.
 +
http.request("http://example.com/", nil, headers) -- This will produce a GET request with your custom headers.
 +
</pre>
  
 
[[Category:APIs]]
 
[[Category:APIs]]

Revision as of 21:46, 5 June 2014

The HTTP API must be enabled in ComputerCraft.cfg before being used. To enable it see this tutorial.

The HTTP API allows interfacing with websites and downloading from them.

Grid disk.png   HTTP (API)

ReturnMethod NameDescription
nil http.request(string url [, string postData [, table headers]]) Sends a HTTP request to a website, asynchronously.
table handle http.get(string url [, table headers]) Sends a HTTP GET request to a website, synchronously.
table handle http.post(string url, string postData [, table headers]) Sends a HTTP POST request to a website, synchronously.

http.request is used to send a HTTP request that completes asynchronously and generates an event (one of http_success or http_failure). http.get and http.post execute http.request and block until the operation completes.

Handles

All three operations make use of handles, tables that contain functions to read data returned from the HTTP server. These handles act the same as the I/O handles returned by fs.open in read-only text mode, implementing the close, readLine, and readAll methods. These handles also implement the following function:


Grid Redstone.png  Function h.getResponseCode
Returns the numerical HTTP response code sent by the server
Syntax h.getResponseCode()
Returns number HTTP response code
Part of ComputerCraft
API HTTP


Headers

As of ComputerCraft 1.63, you can optionally set custom headers. This also means that you can override default headers such as the User-Agent.

Grid paper.png  Example
Sends a request to http://example.com/ with the custom headers.
Code
local headers = {
  ["User-Agent"] = "A custom user-agent!", -- Overrides the default User-Agent.
  ["Hi"] = "Hello" -- A non-standard custom header field.
}
http.get("http://example.com/", headers)



Caution

You must either pass a string or nil as the second argument of http.request(). It will silently fail if you try to pass a header table as the second argument.

http.request("http://example.com/", headers) -- This will produce a normal GET request.
http.request("http://example.com/", nil, headers) -- This will produce a GET request with your custom headers.