http通信の開始
httpload "url","postdata"
"url" : リクエストを行なうファイル名 "postdata" : POSTを行なう際の文字列データ
(プラグイン / モジュール : HSP3Dish)
指定されたURLに対して、http通信を開始します。
この命令は、通信のリクエストを開始するだけで、すぐに結果は取得されません。
通信の結果は、httpinfo命令を使用して正しくデータを受信したことを確認した上で、取得する必要があります。
httploadは、通常は"url"の指定でリクエストを行なうURLスキーム(「http://www.onionsoft.net/about.html」のような文字列)を指定することで、HTTP通信を開始します。
httpload "http://www.onionsoft.net/about.html"
CGIやWebAPIなどにアクセスするために、POST形式で通信を行なう場合は、"postdata"にパラメーター文字列を指定してください。
("postdata"の指定を省略した場合は、通常のGET形式によるHTTP通信が行なわれます。)
httpload "http://www.onionsoft.net/hsp/beta/betabbs.cgi","mode=find&cond=and&log=0&word=script"
POST形式の通信は、"postdata"の形式や仕様については、CGIやhttpリクエストについての知識がある人に向けて用意されているものです。
httpload命令が実行された後は、システム変数statにリクエスト処理が行なわれたかを示す数値が代入されます。
システム変数statが、0の場合は正しくリクエストが完了しています。システム変数statが、0以外の場合は、エラーによりリクエストができなかったことを示しています。
httpload命令で正常にhttp通信を開始した後は、httpinfo命令による受信確認とデータ取得処理をスクリプト側で行なう必要があります。
。
; URLを指定して通信を開始する
httpload "http://www.onionsoft.net/about.html"
if stat : goto *bad ; 正しくリクエストができなかった
*main
; 結果待ちのためのループ
httpinfo res,HTTPINFO_MODE ; 現在のモードを取得
if res = HTTPMODE_READY : goto *ok ; 通信が終了した
if res <= HTTPMODE_NONE : goto *bad ; エラーが発生した
await 50 ; 時間待ちを行なう
goto *main
*bad
; エラー
httpinfo estr,HTTPINFO_ERROR ; エラー文字列を取得する
dialog "ERROR "+estr
stop
*ok
; 完了
httpinfo buf,HTTPINFO_DATA ; 結果データを取得する
httpinfo size,HTTPINFO_SIZE ; データサイズを取得する
http通信によって取得されるデータは、変数が持つメモリに格納されます。
大きなファイルを取得した場合は、そのサイズだけメモリが消費するので注意してください。
あくまでも、メモリ上に取得できる範囲のサイズを想定した簡易的な通信の仕組みであることをご理解の上使用してください。
Windows上であれば、HSPINETプラグインにより、さらに詳細なHTTP通信を行なうことが可能です。
| プラグイン / モジュール | HSP3Dish |
| バージョン | 3.5 |
| 作成日 | 2017/09/08 |
| 著作者 | onitama |
| URL | http://hsp.tv/ |
| 備考 | hsp3dish.asをインクルードすること。 |
| タイプ | 拡張命令 |
| グループ | 拡張入出力制御命令 |
| 対応環境 |
|
| hs ファイル | hsphelp\hsp3dish.hs |