![]()
![]() ![]() インターシステムズ(日) └日本語ドキュメント インターシステムズ(US) (有)エムブイビイ ダイナシステム(株) Googleグループ(英語) Googleグループ(日本語) George James Software cache'infoアーカイブ 【広告】
|
|
Open "|TCP|ポート番号":接続先:タイムアウト値 |
Open したら、次は Use します。
Use "|TCP|ポート番号" |
たったこれだけで、TCP/IPのポートが開いてしまいます。あとは送信がWrite、受信がReadでやり取りをするだけです。パラメーターが違うだけで、手順はファイル操作とまったく同じです。
では、HTMLファイルを取得し、その内容をターミナル画面に表示するルーチンを作成してみます。
GETS(URL) ;HTMLファイル(σ゚д゚)σゲッツ ;【機能】WWWサーバに接続し、HTMLをローカル変数REVに書き込む ;【入力】URL 取得するURL ; W "ファイルを取得しています(",URL,")..." ; N ret,count,I,tout,dev,addr,path,tmp,CRLF S CRLF=$c(13)_$c(10) ;改行コードの設定 S dev="|TCP|80" ; S addr=$P($P(URL,"://",2),"/",1) ;ex www.asahi.com S path="/"_$P($P(URL,"://",2),"/",2,99) ;ex /news/today/top.html ; C dev ;前回正常終了しなかったときのため O dev:addr:30 ; ;■接続 U dev W "GET "_path_" HTTP/1.1"_CRLF,! ;要求送信 W "Referer: "_CRLF,! ;Riffer送信 W "User-Agent: Mozilla/4.0(compatible; MSIE5.01; Windows NT 5.0)"_CRLF,! ;UserAgent送信 W "Accept: */*"_CRLF,! ;Accept送信 W "Accept-Language: ja"_CRLF,! W "Accept-Encoding: SJIS"_CRLF,! W "HOST: "_addr_CRLF,! W CRLF,! ; ;■受信 K DAT S I=$$SetIO^%NLS("SJIS") F I=1:1 R DAT:3 Q:'$T D Q:$ZB=-1 ;取得できなくなるまでループ .U 0 ;ターミナルに入出力を変更 .W DAT ;取得した内容を表示 .U dev ;入出力をネットワークに戻す C dev ; W "完了",! Q |
取得するHTMLファイルのURLを引数として渡します 変数をNewします 変数CRLFに改行コードを設定します 変数devにデバイス名を設定します 引数として渡されたURLからサーバアドレス部を取得します 引数として渡されたURLからパス部を取得します 本当はエラー時はトラップさせて、必ずCloseさせるようにするべきです ポートを開きます ポートを入出力デバイスに定義します WWWサーバー側にリクエストを送信します。 このあたりはHTTPの仕様になります。 プロキシが入るときは dev="|TCP|ProxyPort" addr=ProxyAddress path=URL のようにすればいいと思います。 WWWサーバからデータが送られてこなくなるまでループします。 ポートを閉じます。 |
動作させて見ます。
手前味噌ですが、当サイトのトップページ(親フレーム)を取得してみます。
USER>D GETS^WEBPICK("http://aoiro.s378.xrea.com/") ファイルを取得しています(http://zerogravity.hp.infoseek.co.jp/)...HTTP/1.1 200 OK Date: Sat, 24 May 2003 18:59:01 GMT Server: Apache/1.3.22 (Unix) mod_perl/1.26 WhizBanner/1.0 Set-Cookie: Fhp=3EE42BD692C095C51E7ACD9FADE72383; domain=infoseek.co.jp; path=/; expires=Tuesday, 31-Dec-2030 23:59:59 GMT Content-Length: 527 Content-Type: text/html <html lang=ja><!--nobanner--> <META NAME="WWWC" CONTENT="2003/03/24 01:00"> <title >■青色立方体研究所</title> <frameset cols="180,*" border=0 frameborder=0><!--180,* --><fr ame src="left.shtml" name=left noresize target=main><frame src="index2.html" nam e=main> <noframes><body>このページはデータベースエンジン Cache'(キャシェー) を使っ て気づいたことなどをメモ書き程度に書きとめたものです。<br>誤り・ウソ・大げさ・ま ぎらわしい点ががありましたらご指摘ください。<br><a href="index2.html">Enter</a>< /body></noframes></frameset></html>完了 USER> |
一切エラーハンドリングしてないとはいえ、たったこれだけでHTTPプロトコルでリクエストを投げ、それを取得するプログラムができてしまいました。
あとはこの取得したデータを、煮るなり焼くなり好きにできます。
さらに、HTTPリクエストを加工すれば、望んだデータを取得することもできます。
普通のWEBページでユーザがブラウザから操作することが前提になっているWEBサービスみたいに利用できそうです。
■ 関連リンク |
Openコマンドのパラメータなど詳細に説明してあります (cacheinfo)![]() |