掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
Inet1のプロパティとPerlの環境変数について (ID:79418)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
今回は、OpenURLは使いません。Executeメソッドを発行するだけです。 Webサーバからの応答結果を得たい場合は、StateChangedイベントなどで 処理完了を監視し、その上でGetChunkメソッドを使って取得するようにします。 こうした「非同期」によるコーディングが面倒である場合は、最初に回答した XMLHTTPオブジェクトを利用してみてください。こちらは、非同期モードと 同期モードの両方を利用する事ができるので、コーディングも楽かと。 Dim URL As String Dim oXMLHttpRequest As Object 'As MSXML2.XMLHTTP40 URL = "http://〜〜" 'XMLHTTPオブジェクトを生成します。 Set oXMLHttpRequest = CreateObject("Msxml2.XMLHTTP") '第1引数は、HTTPコマンド(GET,HEAD,POST,TRACEなど) '第2引数は、リソースの位置(http://〜, https://〜など) '第3引数は、Trueなら非同期モード、Falseなら同期モード oXMLHttpRequest.open "GET", URL, False '必要に応じて、追加のHTTP要求ヘッダを指定します。 oXMLHttpRequest.setRequestHeader "LOGON_CHECK", "MyUSER_LOGON" 'sendメソッドにて、データの要求処理を開始します。 ' - 必要に応じて、第1引数にHTTP要求ボディとするデータを ' - 「X.send bodyData」のようにして指定する事もできます。 ' - なお、引数を指定する場合、その引数のデータ型は、 ' - 「Byte型の1次元配列」「String型」「IStream型」「XMLDocument型」 ' - の4種類のいずれかを示すVariant型である必要があります。 oXMLHttpRequest.send '今回は、引数無しで sendメソッドを呼び出します。 'なお、今回は同期モードを指定してありますので、通信が完了するまで 'sendメソッドの実行がブロックされます。 'statusプロパティは、ステータスコードを返します。 '例えば、指定したURLにリソースが無い場合は、404という値が返されます。 If oXMLHttpRequest.Status >= 400 Then 'statusTextプロパティから、状態テキストを取得します。 ' - 指定したリソースが無い時(.status=404)には、Webサーバから ' - "Not Found"などの文字列が、statusTextとして返されます。 MsgBox oXMLHttpRequest.statusText, vbCritical, "通信失敗" Else 'getAllResponseHeadersメソッドを使って、サーバから返された 'すべてのHTTP応答ヘッダを、イミディエイトウィンドウに表示させます。 Debug.Print oXMLHttpRequest.getAllResponseHeaders() 'getAllResponseHeadersメソッドの替わりに、getResponseHeaderメソッドを '使って、個々のHTTP応答ヘッダを取り出す事もできます。 Label1.Caption = oXMLHttpRequest.getResponseHeader("Content-Type") Label2.Caption = oXMLHttpRequest.getResponseHeader("Date") 'responseTextプロパティを使って、サーバから返された 'HTTP応答ボディを、String型のデータとして取得します。 ' - HTTP応答ヘッダの "Content-Type" にて、文字コードが ' - "Content-Type: text/html; charset=EUC-jp" などのように ' - 指定されている場合は、正しく表示されます。しかし、 ' - サーバから文字コードが返されない場合は、XMLHTTPオブジェクトが ' - 文字コードを判別できないため、文字化けする事があります。 Debug.Print oXMLHttpRequest.responseText 'responseBodyプロパティを使って、サーバから返された 'HTTP応答ボディを、Byte型の1次元配列として取得します。 ' - こちらは、先述のresponseTextとは異なり、文字化けの心配がありません。 ' - ただし、文字コードの変換を伴わないので、バイナリデータとしてではなく ' - 文字列として取得したい場合は、ADODB.Streamなどを用いて、文字コードの ' - 変換作業を、自前で行う必要があります。 Dim B() As Byte B = oXMLHttpRequest.responseBody '取得したByte配列データを、ファイルとして保存してみます。 'Dim F As Integer 'F = FreeFile() 'Open "C:\test.html" For Output As #F 'Put #F, , B 'Close #F 'responseXMLプロパティを使って、サーバから返された 'HTTP応答ボディを、XMLDocumentとして取得します。 ' - このプロパティは、サーバがXMLデータを返す時のみ有効です。 ' - おそらく、今回のひよっこVBさんの要件では使用しないでしょう。 'Set oXMLDocument = oXMLHttpRequest.responseXML 'responseStreamプロパティは、IStream型のデータを返します。 ' - このプロパティも、今回の要件では使用しないでしょうね。 'Set oStream = oXMLHttpRequest.responseStream End If Set oXMLHttpRequest = Nothing なお上記では、解説のために、多少冗長的なコードになっていますが、今回、最低限使わなくてはいけないのは、openメソッド(データのURLなどを指定)、setRequestHeaderメソッド(追加の要求ヘッダを指定)、openメソッド(データの送受信を開始)、そして、いずれかのresponse系プロパティ(結果の取得)だけです。
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2020 Takeshi Okamoto All Rights Reserved.