ソース掲示板




すべてから検索

キーワード   条件 表示 現行ログ 過去ログ トピックス 名前 本文
VB.net HTTP Get
日時: 2010/07/23 15:02
名前: lightbox



拡張子:
Public Class Form1


	Private Sub Button1_Click(ByVal sender As System.Object, _
			ByVal e As System.EventArgs) Handles Button1.Click

		' HTTP の最大接続数
		System.Net.ServicePointManager.DefaultConnectionLimit = 10

		' サーバー側のエンコーディング
		Dim enc As System.Text.Encoding = _
		 System.Text.Encoding.GetEncoding("euc-jp")

		' 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 秒)

		' HttpWebResponse の取得
		Dim response As System.Net.HttpWebResponse
		Try
			response = request.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()

	End Sub

End Class
メンテナンス

非同期 ( 部分的 ) ( No.1 )
日時: 2010/07/23 16:46
名前: lightbox


日時: 2010/07/23 16:46
名前: lightbox
拡張子:
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
このアーティクルの参照用URLをクリップボードにコピー メンテナンス