SQLの窓

2011年09月03日


VB.net : COMの Msxml2.ServerXMLHTTP を使用して http 通信を行う

Msxml2.ServerXMLHTTP は、通常 VBScript で利用されるサーバー用のクラスで、CreateObject でインスタンスを作成します。Framework には同様のクラスが存在しますが、経験からするとこちらのほうが簡単で信頼性が高いです。



VB.net で COM を使用する場合は以下のように「参照」を設定する必要があります



html 等の http ヘッダを送れないファイルについては、urf-8 扱いになります(つまりutf-8以外のキャラクタセットで書かれていると日本語を正しく扱えません)。サーバー側で対応したい場合は、.htaccess で指定する事によって、キャラクタセットの設定を http ヘッダに追加できます。php 等のアプリケーションでは、http ヘッダに直接出力します

※ http ヘッダにキャラクタセットの情報があれば、自動的に日本語は処理されます
Public Class Form1

    Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
        Dim ServerXML As New MSXML2.ServerXMLHTTP60()

        Dim URL As String = Me.TextBox1.Text
        ServerXML.open("GET", URL, False)

        Dim lResolve As Integer = 60 * 1000
        Dim lConnect As Integer = 60 * 1000
        Dim lSend As Integer = 60 * 1000
        Dim lReceive As Integer = 60 * 1000
        ServerXML.setTimeouts(lResolve, lConnect, lSend, lReceive)
        ServerXML.send()

        Me.TextBox2.Text = ServerXML.responseText

    End Sub
End Class


「参照」する正確な名前の確認は、以下の手順で行えます。

1) HKEY_CLASSES_ROOT から Msxml2.XMLHTTP の最新バージョンのエントリを探す
2) サブキーの CLSID から ID を取得
 この場合は Msxml2.XMLHTTP.6.0 で {88d96a0a-f192-11d4-a65f-0040963251e5}
3) HKEY_CLASSES_ROOT\CLSID のツリー内より該当するエントリを探す
4) そのエントリのサブキーの TypeLib より値を取得
※ この場合は {F5078F18-C551-11D3-89B9-0000F81FE221}
5) HKEY_CLASSES_ROOT\TypeLib のツリー内より該当するエントリを探す
6) 最新バージョンのサブキーより、名前を取得する
※ この場合は Microsoft XML, v6.0

以下は、Visual Studio を使用しないでビルドする為のパッケージです。
その場合は、COM をインポートするライブラリを手動で作成する必要があります。



関連する記事(ライブラリ作成)

.NET から COM を使う


Microsoft のドキュメント

IServerXMLHTTPRequest/ServerXMLHTTP Members( 英文 )
※ イベントはありません。メソッドとプロパティのみです
※ クッキーは自動的にやりとりされます

System.Net 名前空間


タグ:VB.NET HTTP com
posted by lightbox at 2011-09-03 11:30 | VB.NET : 通信 | このブログの読者になる | 更新情報をチェックする
container 終わり



フリーフォントで簡単ロゴ作成
フリーフォントでボタン素材作成
フリーフォントで吹き出し画像作成
フリーフォントではんこ画像作成
ほぼ自由に利用できるフリーフォント
フリーフォントの書体見本とサンプル
画像を大きく見る為のウインドウを開くボタンの作成

CSS ドロップシャドウの参考デモ
イラストAC
ぱくたそ
写真素材 足成
フリーフォント一覧
utf8 文字ツール
右サイド 終わり
base 終わり