コメント |
@DIV
Public Class Form1
' 非シグナル状態( 待つ状態 )
Public Shared allDone As New System.Threading.ManualResetEvent(False)
Private Sub Button1_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles Button1.Click
' HTTP の最大接続数
System.Net.ServicePointManager.DefaultConnectionLimit = 2
' HttpWebRequestの作成
Dim request As System.Net.HttpWebRequest = _
System.Net.HttpWebRequest.Create("http://winofsql.sakura.ne.jp/lightbox/euc.php")
request.Method = "GET"
request.UserAgent = "lightbox"
Console.WriteLine(request.KeepAlive)
Console.WriteLine(request.Timeout) ' 100,000 ミリ秒 (100 秒)
Dim result As IAsyncResult = _
CType(request.BeginGetResponse( _
New AsyncCallback(AddressOf ResponseCallback), request), IAsyncResult _
)
' 呼び出したスレッドむの終了を待つ
allDone.WaitOne()
Console.WriteLine("END:" + result.ToString())
End Sub
Private Shared Sub ResponseCallback(ByVal asynchronousResult As IAsyncResult)
' サーバー側のエンコーディング
Dim enc As System.Text.Encoding = _
System.Text.Encoding.GetEncoding("euc-jp")
Try
' HttpWebResponse の取得
Dim response As System.Net.HttpWebResponse
Try
response = CType(asynchronousResult.AsyncState, System.Net.HttpWebRequest).GetResponse()
' ステータスコード
Console.WriteLine(response.StatusCode) ' 200
Console.WriteLine(response.StatusCode.ToString()) ' OK
Console.WriteLine(response.StatusDescription) ' OK
Catch ex As Exception
' エラー例 : リモート サーバーがエラーを返しました: (404) 見つかりません
Console.WriteLine(ex.ToString())
Return
End Try
' ヘッダを KEY=VALUE で表示
Dim key As String
For Each key In response.Headers
Console.WriteLine(key + "=" + response.Headers(key))
Next
Console.WriteLine()
' ヘッダのまま表示
Console.WriteLine(response.Headers)
' Content-Type: text/html; Charset=euc-jp
Console.WriteLine(response.ContentType)
' Stream を取得
Dim data_stream As System.IO.Stream = response.GetResponseStream()
' 受信
Dim stream_reader As New System.IO.StreamReader(data_stream, enc)
' 表示
Console.WriteLine(stream_reader.ReadToEnd())
' 閉じる
' ※ オブジェクトと、その基になるストリームを閉じ、
' ※ リーダーに関連付けられたすべてのシステムリソースを解放
stream_reader.Close()
response.Close()
Catch ex As Exception
Console.WriteLine(ex.Message)
End Try
Dim ret As Integer = -1
CType(asynchronousResult.AsyncState, System.Net.HttpWebRequest).EndGetResponse(asynchronousResult)
' 本体に終了を通知
allDone.Set()
End Sub
End Class
@END |