WINSOCKD 使用HTTP协议的问题.请进来指点.
yeman 2004-11-13 12:18:24 看到别人写的小程序可以访问网页并提取内容,还可以提交内容.所以也想用VB写个.
下面是我找的一个例子改的.
Option Explicit
Dim strCommand As String
Dim strWebPage As String
Private Sub Command1_Click()
If Winsock1.State <> 0 Then Winsock1.Close
Winsock1.RemoteHost = "61.134.xx.xx" '返回或设置远程计算机,控件向它发送数据或从它那里接收数据。
Winsock1.RemotePort = 80 '返回或设置要连接的远程端口号
Winsock1.Connect '返回与远程计算机的连接。
End Sub
Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
Winsock1.Close
End Sub
Private Sub Winsock1_Connect() '当一个 Connect 操作完成时发生。
On Error Resume Next
strWebPage = "http://61.134.xx.xx/BBS/Default.asp"
strCommand = "GET " + strWebPage + " HTTP/1.0" + vbCrLf
strCommand = strCommand + "Accept: */*" + vbCrLf '这句可以不要
strCommand = strCommand + vbCrLf '记住一定要加上vbCrLf
Winsock1.SendData strCommand '给远程计算机发送数据
End Sub
Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long) '当新数据到达时产生该事件
On Error Resume Next '在错误处理程序结束后,恢复原有的运行
Dim webData As String
Winsock1.GetData webData, vbString '检取当前的数据块
Text1.Text = Text1.Text + webData
End Sub
//////////////////////////////////////////////////
问题1:
strCommand = "GET " + strWebPage + " HTTP/1.0" + vbCrLf
改为:strCommand = "GET " + strWebPage + " HTTP/1.1" + vbCrLf
不能返回正确的网页,但是用http/1.0提交后服务器返回的头中却显示的是 http/1.1
问题2:
我用httpdebug软件测试论坛首页,返回的页面中显示我使用的端口.我再次提交后还使用的此端口,说明我和服务器的连接并没有中断.
但是我上面的程序,发送数据后,当服务器数据返回完后,对方服务器会主动断开连接.
此时我似乎不能使用Winsock1.SendData,只有close后重新Winsock1.Connect.此时使用的已经不是上次使用的端口了。
问题3:httpdebug中有AotuCookie, 如果用上面的程序有该怎么处理autocookie. 端口改变,服务器返回的cookie也就变了。
请高手指点,谢谢