API > HTTP

「API/HTTP」の編集履歴(バックアップ)一覧はこちら

API/HTTP」(2013/09/14 (土) 18:43:39) の最新版変更点

追加された行は緑色になります。

削除された行は赤色になります。

このページではHTTP APIについて解説する。 参考資料: -[[HTTP API>http://computercraft.info/wiki/index.php?title=HTTP_%28API%29]] 執筆時のバージョン: -ComputerCraft 1.56 for Minecraft 1.6.2 ---- #contents ---- *HTTP API HTTPによりインターネット上のサーバーへGET/POSTリクエストを送信し、ウェブサイトをダウンロードすることができるAPI。 このAPIを利用するには、前もって[[ComputerCraft.cfg>Config]]のenableAPI_httpをtrueにしておく必要がある。設定がfalse(デフォルト)の場合、このAPI自体コンピュータに読み込まれない。 文字列をURLエンコードするには[[textutils.urlEncode関数>API/Textutils#id_c92ca7c3]]を利用するとよい。 なお、ここでは(プロトコルとしての)HTTPについての解説は行わない。 **各メソッドのヘッダ (どんなヘッダが送信されているのか気になる人向け) HTTP APIでは&u(){プレイヤーが任意のヘッダを指定することはできず}、またComputerCraft側でも特にヘッダを指定していないため、Javaデフォルトのヘッダで送信されているものと思われる。 以下は各メソッドで送信されるリクエスト行およびヘッダ行の例。ちなみに、ゲーム内でpastebinプログラムを利用して[[Pastebin>http://pastebin.com/]]でプログラムファイルを取得・投稿した時のもの(Javaバージョンは1.7.0 25)。 &bold(){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 > &bold(){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( &italic(){url}[, &italic(){postData}]) -URL&italic(){url}(文字列)にHTTPリクエストを送信する。 &br()&italic(){postData}(文字列)を指定すると、POSTメソッドでメッセージボディとして送信される。&italic(){postData}が省略またはnilの時はGETメソッドで送信される -戻り値:nil レスポンスは[[os.pullEvent関数>API/OS#id_12ecb1d0]]で[[http_successまたはhttp_failureイベント>API/OS#id_aae1e50c]]を捕捉することで取得する。そのため、レスポンスを非同期的に取得することができる。 例: 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( &italic(){url} ) -URL&italic(){url}(文字列)にHTTP GETリクエストを送信し、レスポンスを取得する -戻り値:テーブル型。取得したウェブサイトの[[ファイルハンドル>API/FS#id_340ee13d]]。ただし、取得に失敗した場合は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( &italic(){url}, &italic(){postData}) -URL&italic(){url}(文字列)にHTTP POSTリクエストを送信し、レスポンスを取得する。&italic(){postData}(文字列)がメッセージボディとして送信される -戻り値:テーブル型。取得したウェブサイトの[[ファイルハンドル>API/FS#id_340ee13d]]。ただし、取得に失敗した場合はnilが返る リクエストに対するレスポンスが返ってくるまで処理を停止する。内部的にはhttp.request関数とos.pullEvent関数を利用している。 &italic(){postData}が省略またはnilの場合は代わりに""(長さ0文字列)が使われる。
このページではHTTP APIについて解説する。 参考資料: -[[HTTP API>http://computercraft.info/wiki/index.php?title=HTTP_%28API%29]] 執筆時のバージョン: -ComputerCraft 1.56 for Minecraft 1.6.2 ---- #contents ---- *HTTP API HTTPによりインターネット上のサーバーへGET/POSTリクエストを送信し、ウェブサイトをダウンロードすることができるAPI。 このAPIを利用するには、前もって[[ComputerCraft.cfg>Config]]のenableAPI_httpをtrueにしておく必要がある。設定がfalse(デフォルト)の場合、このAPI自体コンピュータに読み込まれない。 文字列をURLエンコードするには[[textutils.urlEncode関数>API/Textutils#id_c92ca7c3]]を利用するとよい。 なお、ここでは(プロトコルとしての)HTTPについての解説は行わない。 **各メソッドのヘッダ (どんなヘッダが送信されているのか気になる人向け) HTTP APIでは&u(){プレイヤーが任意のヘッダを指定することはできず}、またComputerCraft側でも特にヘッダを指定していないため、Javaデフォルトのヘッダで送信されているものと思われる。 以下は各メソッドで送信されるリクエスト行およびヘッダ行の例。ちなみに、ゲーム内でpastebinプログラムを利用して[[Pastebin>http://pastebin.com/]]でプログラムファイルを取得・投稿した時のもの(Javaバージョンは1.7.0 25)。 &bold(){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 > &bold(){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( &italic(){url}[, &italic(){postData}]) -URL&italic(){url}(文字列)にHTTPリクエストを送信する。 &br()&italic(){postData}(文字列)を指定すると、POSTメソッドでメッセージボディとして送信される。&italic(){postData}が省略またはnilの時はGETメソッドで送信される -戻り値:nil レスポンスは[[os.pullEvent関数>API/OS#id_12ecb1d0]]で[[http_successまたはhttp_failureイベント>API/OS#id_aae1e50c]]を捕捉することで取得する。そのため、レスポンスを非同期的に取得することができる。 例: 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( &italic(){url} ) -URL&italic(){url}(文字列)にHTTP GETリクエストを送信し、レスポンスを取得する -戻り値:テーブル型。取得したウェブサイトの[[ファイルハンドル>API/FS#id_340ee13d]]。ただし、取得に失敗した場合は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( &italic(){url}, &italic(){postData}) -URL&italic(){url}(文字列)にHTTP POSTリクエストを送信し、レスポンスを取得する。&italic(){postData}(文字列)がメッセージボディとして送信される -戻り値:テーブル型。取得したウェブサイトの[[ファイルハンドル>API/FS#id_340ee13d]]。ただし、取得に失敗した場合はnilが返る リクエストに対するレスポンスが返ってくるまで処理を停止する。内部的にはhttp.request関数とos.pullEvent関数を利用している。 &italic(){postData}が省略またはnilの場合は代わりに""(長さ0文字列)が使われる。

表示オプション

横に並べて表示:
変化行の前後のみ表示: