参考資料:
執筆時のバージョン:
- ComputerCraft 1.56 for Minecraft 1.6.2
HTTP API
HTTPによりインターネット上のサーバーへGET/POSTリクエストを送信し、ウェブサイトをダウンロードすることができるAPI。
このAPIを利用するには、前もって
ComputerCraft.cfgのenableAPI_httpをtrueにしておく必要がある。設定がfalse(デフォルト)の場合、このAPI自体コンピュータに読み込まれない。
なお、ここでは(プロトコルとしての)HTTPについての解説は行わない。
各メソッドのヘッダ
(どんなヘッダが送信されているのか気になる人向け)
HTTP APIではプレイヤーが任意のヘッダを指定することはできず、またComputerCraft側でも特にヘッダを指定していないため、Javaデフォルトのヘッダで送信されているものと思われる。
以下は各メソッドで送信されるリクエスト行およびヘッダ行の例。ちなみに、ゲーム内でpastebinプログラムを利用して
Pastebinでプログラムファイルを取得・投稿した時のもの(Javaバージョンは1.7.0 25)。
GETの例
GET /raw.php?i=smLqWBif HTTP/1.1
User-Agent: Java/1.7.0_25
Host: pastebin.com
Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2
Connection: keep-alive
POSTの例
POST /api/api_post.php HTTP/1.1
User-Agent: Java/1.7.0_25
Host: pastebin.com
Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2
Connection: keep-alive
Content-Length: 219
request
dan200.computer.core.apis.HTTPAPI で定義
- http.request( url[, postData])
- URLurl(文字列)にHTTPリクエストを送信する。
postData(文字列)を指定すると、POSTメソッドでメッセージボディとして送信される。postDataが省略またはnilの時はGETメソッドで送信される
- 戻り値:nil
例:
local url = "http://example.com/"
http.request(url)
while true do
local event, sourceUrl, file = os.pullEvent()
if event == "http_success" and sourceUrl == url then
print(file.readAll())
file.close()
break
elseif event == "http_failure" and sourceUrl == url then
print("Server didn't respond.")
break
end
end
http://example.com/(IANAのExampleドメイン)からウェブページをダウンロードする。
成功した場合はページの内容(HTML)が、失敗(タイムアウト)した場合は"Server didn't respond."が表示される。
get
assets\computercraft\lua\bios.lua で定義
- http.get( url )
- URLurl(文字列)にHTTP GETリクエストを送信し、レスポンスを取得する
- 戻り値:テーブル型。取得したウェブサイトのファイルハンドル。ただし、取得に失敗した場合はnilが返る
リクエストに対するレスポンスが返ってくるまで処理を停止する。内部的にはhttp.request関数とos.pullEvent関数を利用している。
例:
local file = http.get("http://example.com/")
if file ~= nil then
print(file.readAll())
file.close()
else
print("Server didn't respond.")
end
http://example.com/(IANAのExampleドメイン)からウェブページをダウンロードする。
成功した場合はページの内容(HTML)が、失敗(タイムアウト)した場合は"Server didn't respond."が表示される。
post
assets\computercraft\lua\bios.lua で定義
- http.post( url, postData)
- URLurl(文字列)にHTTP POSTリクエストを送信し、レスポンスを取得する。postData(文字列)がメッセージボディとして送信される
- 戻り値:テーブル型。取得したウェブサイトのファイルハンドル。ただし、取得に失敗した場合はnilが返る
リクエストに対するレスポンスが返ってくるまで処理を停止する。内部的にはhttp.request関数とos.pullEvent関数を利用している。
postDataが省略またはnilの場合は代わりに""(長さ0文字列)が使われる。
最終更新:2013年09月14日 18:43