NETWORK インターネットトランスファ(Inet)コントロールの使い方

ネットワーク
FROG ふろっぐ
 
  • オプション

    本文印刷

    お気に入りに追加

  • 検索

    Googlewwwjp-ia
     

    Googlewwwjp-ia
     
  • 情報

  • 関連

[ネットワーク][NETWORK インターネットトランスファ(Inet)コントロールの使い方]
インターネット トランスファ コントロールでは、広く使われている 2 つのインターネット プロトコルを利用できます。
それらのプロトコルは、ハイパー テキスト トランスファー プロトコル (HTTP) とファイル転送プロトコル (FTP) です。
インターネット トランスファ コントロールを使用すると、これらのプロトコルのいずれかを使用している任意のサイトに接続できます。
OpenURL メソッドまたは Execute メソッドを使うと、それらのサイトからファイルを転送することもできます。

  • 用途
    • アプリケーションに FTP ブラウザを付加します。
    • パブリック FTP サイトから自動的にファイルをダウンロードするアプリケーションを作成します。
    • ワールド ワイド ウェブ (WWW) サイトを解析してグラフィック データを検索し、グラフィック データだけをダウンロードします。
    • Web ページから動的に読み取ったデータを加工して表示します。
  • 基本操作
    • インターネット トランスファ コントロールの機能は、使用されるプロトコルによって異なります。これは、サポートされている 2 つのプロトコルの機能が異なるためです。
    • たとえば、GetHeader メソッドは HTTP (HTML ドキュメント) プロトコルでしか使えません。
    • ただし、2 つのプロトコルの操作手順には共通の部分もあります。どちらのプロトコルを使用する場合でも、次の基本的な操作は必要です。
    • AccessType プロパティに有効なプロキシ サーバー (代理サーバー) を設定します。
    • 有効な URL を指定した OpenURL メソッドを実行します。
    • 有効な URL を指定した Execute メソッド、および使用するプロトコルに適合したコマンドを実行します。
    • GetChunk メソッドを使用して、バッファからデータを読み取ります。
  • AccessType プロパティの設定
    • プロキシ サーバーを使用する
      • インターネットに接続する場合、まず、自分のコンピュータをどのような形態でインターネットに接続するかを決定する必要があります。コンピュータが既にイントラネットに接続されている場合は、プロキシ (代理サーバー) をとおしてインターネットに接続されます。
      • 簡単に言えば、"プロキシ サーバー" は、インターネットとそれに接続されるコンピュータとの仲介役を果たします。イントラネット上のコンピュータをインターネットに接続する場合は、必ず、プロキシ サーバーをとおす必要があります。このようにして、プロキシ サーバーはイントラネットとインターネットの間の "ファイアウォール" として動作します。ファイアウォールは、社内、社外を問わず、正規のユーザー以外のどんなユーザーからのアクセスも拒否し、イントラネットを悪意のある侵入者から保護します。
      • 自分のコンピュータのプロキシ サーバーの設定を見るには
        メモ 次に示す操作手順は、Windows 95 と Windows NT 4.0 システムでだけ有効です。
        • タスク バーの [スタート] ボタンをクリックします。
        • [設定] をポイントして、[コントロール パネル] をクリックします。
        • [インターネット] アイコンをダブルクリックします。
        • インターネットのプロパティ] ダイアログ ボックスで、[接続] タブをクリックします。
        • [プロキシ サーバー] で、[プロキシ サーバー経由で接続する] チェック ボックスがオンになっていることを確認します。
        • [設定] をクリックします。さまざまなプロトコル用のプロキシ サーバーの名前がリスト ボックスに表示されます。プロキシ サーバーが 1 つも定義されていない場合は、システム管理者に連絡して、利用できるプロキシ サーバーについて問い合わせてください。
        • ダイアログ ボックスに表示されていないプロキシ サーバーを使用する場合は、AccessType プロパティを icNamedProxy (2) に設定してください。その後、次に示すコードのように、Proxy プロパティにプロキシ サーバーの名前を設定します。

          Inet1.Proxy = "myProxyName"
          Inet1.AccessType = icNamedProxy
        • 使用するコンピュータのレジストリで初めから設定されているプロキシ サーバーを使用する場合は、AccessType プロパティを icUseDefault (0) に設定するだけです。Proxy プロパティは無視してください。
        • 次の表に AccessType プロパティの設定値を示します。
          定数 説明
          icUseDefault 0 (既定値) 既定の設定値を使用。インターネット トランスファ コントロールは、レジストリで設定されている既定値を使ってインターネットにアクセスします。
          icDirect 1 インターネット直接接続。インターネット トランスファ コントロールは、コンピュータをインターネットに直接接続します。
          icNamedProxy 2 指定プロキシ サーバーを使用。インターネット トランスファ コントロールは、Proxy プロパティで指定されたプロキシ サーバーを使用します。
          OpenURL メソッドを実行する
          AccessType プロパティの設定後に行う最も基本的な操作は、有効な URL を指定した OpenURL メソッドの実行です。OpenURL メソッドを使用する場合の結果は、ターゲットの URL によって異なります。たとえば、次の例では、www.microsoft.com で見つかった HTML ドキュメントが URL から返されます。
          "Text1" という名前のテキスト ボックス (TextBox) コントロールにメソッドの実行結果を格納します。インターネット トランスファ コントロール の名前は "Inet1" です。
          Text1.Text = Inet1.OpenURL("http://www.microsoft.com")
          この例を実行すると、テキスト ボックス コントロールに次のような HTML ソースが格納されます。
          このような例では、特に指定しない限り URL で検索された HTML ドキュメントが返されます。ただし、URL の内容が特定のテキスト ファイル用に修正されている場合は、実際に表示されるファイルの内容がそのまま返されます。次に例を示します。

          Text1.Text = Inet1. _
          OpenURL("ftp://ftp.microsoft.com/disclaimer.txt")

          この例を実行すると、次のように、端末での表示内容と同じテキスト ファイルが表示されます。

          ヒント OpenURL メソッドまたは Execute メソッドを使用する場合、Protocol プロパティを設定する必要はありません。インターネット トランスファ コントロールでは、URL のプロトコル ポーションで指定されている正しいプロトコルが自動的に使用されます。

          OpenURL メソッドは、アペンド データを含む URL を指定して実行することもできます。たとえば、多くの Web サイトではデータベース検索機能を提供しています。検索機能を利用する場合は、URL に検索条件を含めて送信します。次の例では、"search.exe" という名前のエンジンを使用して、"find=Maui" という条件で検索しています。

          Dim strURL As String
          strURL = _
          "http://www.howzit.com/cgi-bin/search.exe?find=maui"
          Text1.Text = Inet1.OpenURL(strURL)

          条件に適合するデータが見つかった場合、該当する情報を含む HTML ドキュメントが構成されて、返されます。

          OpenURL メソッドを使用してファイルに保存する
          OpenURL メソッドによって読み取られたデータをファイルに保存する場合は、次のコードに示すように Open ステートメント、Put ステートメント、および Close ステートメントを使用します。この例では、バイナリ ファイルをバイト (Byte) 配列に入れてから、そのデータをディスクに保存します。

          Dim strURL As String
          Dim bData() As Byte ' Data 用変数
          Dim intFile As Integer ' FreeFile 用変数
          strURL = "ftp://ftp.microsoft.com/Softlib/Softlib.exe"
          intFile = FreeFile() ' intFile を未使用ファイルに設定します。
          OpenURL メソッドの実行結果をバイト (Byte) 配列に格納し、次に、バイト (Byte) 配列の内容をディスクに保存します。
          bData() = Inet1.OpenURL(strURL, icByteArray)
          Open "C:\Temp\Softlib.exe" For Binary Access Write As #intFile
          Put #intFile, , bData()
          Close #intFile

          バイト (Byte) 配列が必要でないこと以外は、テキスト ファイルをディスクに出力するコードもほぼ同様です。この場合、データはファイルに直接保存されます。

          Dim strURL As String ' URL 文字列
          Dim intFile As Integer ' FreeFile 用変数
          IntFile = FreeFile()
          strURL = "http://www.microsoft.com"
          Open "c:\temp\MSsource.txt" For Output As #IntFile
          Write #IntFile, Inet1.OpenURL(strURL)
          Close #IntFile

          同期転送と非同期転送
          OpenURL メソッドを実行すると、データは同期転送されます。ここで "同期" とは、ほかのすべてのプロシージャが実行される前に転送処理が行われる、という意味です。つまり、データ転送は、ほかのどんなコードが実行されるよりも前に完了している必要があるということです。

          これに対し、Execute メソッドを実行すると、データは "非同期" 転送されます。Execute メソッドが呼び出されると、転送処理は、ほかのプロシージャの実行とは無関係に行われます。つまり、Execute メソッドを実行すると、バックグラウンドでデータ受信を行いながら、ほかのコードを実行することができます。

          インターネット トランスファ コントロールでこれらのメソッドを使用する場合は、以下の点に注意してください。つまり、OpenURL メソッドは、前の例のようにデータ ストリームをディスクに直接保存するとき、またはテキスト データの場合に結果を直接テキスト ボックス コントロールに表示するときに使用します。一方、Execute メソッドを使ってデータを読み取る場合は、インターネット トランスファ コントロールの接続の状態を StateChanged イベントによって監視する必要があります。そして、適切な状態になったときに GetChunk メソッドを実行して、コントロールのバッファからデータを読み取ります。この操作については、この後で詳細に説明します。

          Execute メソッドに FTP プロトコルを指定して使用する
          Execute メソッドには、url、operation、data、および requestHeaders という 4 つの引数があります。このうち、FTP の操作で指定する引数は、operation および url だけです。引数 url は省略可能です。たとえば、あるリモート コンピュータからファイルを転送する場合、次のように記述することができます。
          Inet1.Execute "FTP://ftp.microsoft.com", _
          "GET disclaimer.txt C:\Temp\Disclaimer.txt"

          名前が不明の FTP サーバーから FTP プロトコルを使ってファイルを転送することに習熟すると、サーバーのディレクトリ ツリー内を移動し、ローカル ハード ディスクにファイルを転送するためのコマンド群に精通するようになります。たとえば、FTP プロトコルを使ってディレクトリを移動するには、移動先のディレクトリのパスを指定した "CD" コマンドを使用できます。

          サーバーへのファイル出力、サーバーからのファイル転送など、最も一般的な操作の場合は、インターネット トランスファ コントロールの Execute メソッドに、それらサーバーのコマンドと同一または同様のコマンドを指定できます。たとえば、次の例では、"CD" コマンドを Execute メソッドの引数として指定して、ディレクトリを移動しています。

          txtURL テキスト ボックスには、開かれるパスを指定します。
          txtRemotePath テキスト ボックスには、移動先のパスを指定します。
          Inet1.Execute txtURL.Text, "CD " & txtRemotePath.Text

          メモ Execute メソッドに FTP コマンドを指定して実行する場合は、引数 data および引数 requestHeaders は使用されません。その代り、すべての操作と操作に必要なパラメータを 1 つの文字列として引数 operation に指定することもがきます。この場合、各パラメータはスペースで区切ります。以降の説明では、"file1"、"file2" という語と、引数 data および引数 requestHeaders を混同しないようにしてください。

          FTP 操作の構文は次のとおりです。

          operationName file1 file2

          たとえば、サーバーからファイルを転送する場合、次の例のように operationName に "GET" を指定し、操作に必要な 2 つのファイル名を指定します。

          ' Disclaimer.txt という名前のファイルを
          ' サーバーから転送し、C:\Temp\Disclaimer.txt としてコピーします。
          Inet1.Execute, _
          "GET Disclaimer.txt C:\Temp\Disclaimer.txt"

          次の表は、インターネット トランスファ コントロールでサポートされている FTP コマンドの一覧です。

          コマンド 説明 使用例
          CD file1 ディレクトリの変更。
          file1 で指定されたディレクトリに移動します。
          Execute , "CD docs\mydocs"

          CDUP 1 つ上のディレクトリに移動。"CD .." と同じです。 Execute , "CDUP"

          DELETE file1 file1 で指定されたファイルを削除します。 Execute , "DELETE discard.txt"

          DIR [file1] file1 で指定されたディレクトリの一覧を表示します。file1 を省略すると、現在の作業ディレクトリの一覧が表示されます。DIR の出力データを取得するには GetChunk メソッドを使用します。 Execute , "DIR /mydocs"

          GET file1 file2 file1 で指定されたリモート ファイルを file2 で指定された新しいローカル ファイルにコピーします。 Execute , _"GET getme.txt C:\gotme.txt"

          MKDIR file1 file1 で指定されたディレクトリを作成します。このコマンドを実行するにはリモート ホストでのユーザー特権が必要です。 Execute , "MKDIR /myDir"

          PUT file1 file2 file1 で指定されたローカル ファイルを file2 で指定されたリモート ホストにコピーします。 Execute , _"PUT C:\putme.txt /putme.txt"

          PWD 作業ディレクトリの出力。現在のディレクトリ名を返します。PWD の出力データを取得するには、GetChunk メソッドを使用します。 Execute , "PWD"

          QUIT 現在の接続を終了します。 Execute , "QUIT"

          RECV file1 file2 GET と同じです。 Execute , _"RECV getme.txt C:\gotme.txt"

          RENAME file1 file2 ファイル名の変更。このコマンドを実行するにはリモート ホストでのユーザー特権が必要です。 Execute , "RENAME old.txt new.txt"


          RMDIR file1 ディレクトリの削除。このコマンドを実行するにはリモート ホストでのユーザー特権が必要です。 Execute , "RMDIR oldDir"

          SEND file1 FTP サイトにファイルをコピーします。PUT と同じです。 Execute , _"SEND C:\putme.txt /putme.txt"

          SIZE file1 file1 で指定されたファイルのサイズを返します。 Execute "SIZE /largefile.txt"

          重要 接続しているプロキシ サーバーが CERN プロキシ サーバーの場合、Execute メソッドを使用したダイレクト FTP 接続は拒否されます。その場合、サーバーからファイルを転送するには、OpenURL メソッドに Open ステートメント、Put ステートメント、および Close ステートメントを指定して実行します。これは、前の「OpenURL メソッドを使用してファイルに保存する」で説明されています。ターゲット ディレクトリを URL として指定した OpenURL メソッドを実行することによって、ディレクトリの一覧を得ることもできます。

          Execute メソッドに HTTP プロトコルを指定して使用する
          HTTP プロトコルでは、GET コマンド、HEAD コマンド、POST コマンド、および PUT コマンドによって、サーバーのデータをクライアント マシンに転送することができます。次の表は、これらのコマンドの一覧です。

          コマンド 説明 使用例
          GET url で指定されたファイルを読み取ります。 Execute "http://www.microsoft.com" & _"/default.htm", "GET"

          HEAD URL プロパティで指定されたファイルのヘッダだけを読み取ります。 Execute , "HEAD"

          POST リモート ホストへの要求をサポートするための追加データを指定します。 Execute , "POST", strFormData

          PUT 指定された URL でデータを置換します。 Execute , "PUT", "replace.htm"

          コモン ゲートウェイ インターフェイスと Execute メソッド
          多くのワールド ワイド ウェブ サイトでは、データベース検索機能を提供しています。この機能は、コモン ゲートウェイ インターフェイス (CGI) をとおしてクエリーを送出する HTTP プロトコルの機能によって実現されています。

          CGI については、このトピックでは扱いません。ただし、CGI に精通していれば、Execute メソッドを使って、ワールド ワイド ウェブ サイトの動作をシミュレートするアプリケーションを構築することができます。次に、一般的な CGI クエリー文字列の例を示します。

          http://www.yippee.com/cgi-bin/find.exe?find=Hangzhou

          これと同一のクエリーを Execute メソッドを使って送出するコードの例を次に示します。

          Dim strURL As String, strFormData As String
          strURL = "//www.yippee.com/cgi-bin/find.exe"
          strFormData = "find=Hangzhou"
          Inet1.Execute strURL, "POST", strFormData

          上の例のように、サーバーから何らかの結果を受け取るプログラムの場合は、GetChunk メソッドを使用して、クエリー結果を反映した HTML ドキュメントを読み取る必要があります。

          State イベント プロシージャで GetChunk メソッドを使用する
          リモート コンピュータからデータをダウンロードすると、非同期の接続が確立されます。たとえば、Execute メソッドに "GET" 操作を指定して実行すると、サーバーは要求されたファイルを読み取ります。ファイル全体が読み取られると、引数 State に icResponseCompleted (12) が返されます。その時点で、GetChunk メソッドを使ってバッファからデータを転送できます。次にコードの記述例を示します。

          Private Sub Inet1_StateChanged(ByVal State As Integer)
          Dim vtData As Variant ' Data 変数
          Select Case State
          ' ... ほかの条件のコードは省略されています。
          Case icResponseCompleted ' 12
          ' 出力先のファイルを開きます。
          Open txtOperation For Binary Access _
          Write As #intFile

          ' 最初のデータを読み取ります。注意: バイナリ ファイルを読み取る
          ' 場合はバイト (Byte) 配列 (icByteArray) を指定します。
          vtData = Inet1.GetChunk(1024, icString)

          Do While LenB(vtData) > 0
          Put #intFile, , vtData
          ' 次のデータを読み取ります。
          vtData = Inet1.GetChunk(1024, icString)
          Loop
          Put #intFile, , vtData
          Close #intFile
          End Select
          End Sub

          FTP サーバーにログオンする
          FTP サーバーには、パブリックとプライベートの 2 種類があります。パブリック サーバーは、名前からも分かるように、誰でもアクセスすることができます。一方、プライベート サーバーは、そのサーバーの真正なユーザーでなければログオンできません。どちらのサーバーの場合も、FTP プロトコルでは、ユーザー名とパスワードを指定する必要があります。ユーザー名およびパスワードは、ユーザーを認証し、以降の操作を許可するかどうかを決定するのに使用されます。

          パブリック サーバーにログオンする場合、一般的な慣習として "名前なし" のユーザー (ユーザー名 "anonymous") としてログインし、パスワードとして自分の電子メール名を送出します。ただし、インターネット トランスファ コントロールを使うと、この手順は大幅に簡略化できます。特に指定しない限り、UserName プロパティおよび Password プロパティに値を設定しないと、インターネット トランスファ コントロールは UserName として "anonymous" を、Password としてユーザーの電子メール名を送出します。

          プライベート サーバーにログオンする場合は、UserName プロパティ、Password プロパティ、および URL プロパティを適切に設定し、Execute メソッドを実行します。次にその例を示します。

          With Inet1
          .URL = "ftp://ftp.someFTPSite.com"
          .UserName = "John Smith"
          .Password = "mAuI&9$6"
          .Execute ," DIR" ' ディレクトリを返します。
          .Execute ," CLOSE" ' 接続を閉じます。
          End With

          Execute メソッドを実行すると、その後 FTP 接続は開いたままになります。この状態で CD、GET などほかの FTP 操作を指定した Execute メソッドを実行できます。セッションでの作業が完了したら、CLOSE 操作を指定した Execute メソッドを実行して接続を閉じます。URL プロパティを変更して、OpenURL メソッドまたは Execute メソッドを実行すると、接続は自動的に閉じられます。つまり、そのような操作によって現在の FTP 接続が閉じられ、新しい URL が開かれます。





Production Japan Import Application. Since 1998