- PR -

HTTP通信について

1
投稿者投稿内容
Face
常連さん
会議室デビュー日: 2003/06/22
投稿数: 43
投稿日時: 2006-07-21 19:09
Soketを用いてHTTPリクエストを送信し、
結果を表示させたく、下記プログラムを実行しました。

TextBox1.Textには
「POST http://localhost:8000//httptest/FormTest HTTP/1.1\r\nHost: localhost\r\nConnection: close\r\n\r\n
;」

とHTTPリクエスト文字列を入れ送信しています。

実行すると、プログラムが固まり応答がなくなってしまいます。
どうしてでしょうか・・・。
もし詳しい方いらっしゃいましたら助言お願いいたします。

リクエスト受信側:Java
サーブレットコンテナ:TOMCAT4.1

以下、プログラム内容
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

Private intPortNo As Integer = 8000
Private objNetStream As System.Net.Sockets.NetworkStream
Private objTcpClient As System.Net.Sockets.TcpClient

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim bytReceiveBuffer(255) As Byte
Dim bytSendBuffer As Byte()
Dim intDataLength As Integer
Dim strReceivedData As String


objTcpClient = New System.Net.Sockets.TcpClient
With objTcpClient
Try
objTcpClient.Connect("localhost", intPortNo)
objNetStream = .GetStream
With objNetStream
bytSendBuffer = System.Text.Encoding.Default.GetBytes(TextBox1.Text)
.Write(bytSendBuffer, 0, bytSendBuffer.Length)
Do
If .DataAvailable Then
intDataLength = .Read(bytReceiveBuffer, 0, bytReceiveBuffer.Length)
strReceivedData &= System.Text.Encoding.Default.GetString(bytReceiveBuffer).Substring(0, intDataLength)
ElseIf Not strReceivedData Is Nothing Then
TextBox2.Text = strReceivedData
Exit Do
End If
Loop
End With
Catch Ex As Exception
MsgBox(Ex.Message)
End Try
.Close()
End With
End Sub
End Class
スフレ
ぬし
会議室デビュー日: 2005/05/27
投稿数: 281
お住まい・勤務地: 東京
投稿日時: 2006-07-21 20:49
VBはぜんぜん知らないのでてきとーに指摘します。

Faceさんがしたいことは「GET」ではなく「POST」リクエストで正しいですね?(確認)

「POST」の直後が間違っています。「/httptest/FormTest HTTP/1.1」かと思います。

POSTで送りたいデータが「;」であれば、「Content-Length: 1」というヘッダも必要かと思います。
かるあ
ぬし
会議室デビュー日: 2003/11/16
投稿数: 1190
お住まい・勤務地: センガワ→ムサシノ
投稿日時: 2006-07-22 05:43
これは、Socket を使って HTTP を実装するのが目的なんですか?

それとも HTML をダウンロードするのが目的なんですか?
ダウンロードしたいだけだったら WebClient を使ったほうが簡単だと思いますが
1

スキルアップ/キャリアアップ(JOB@IT)