【VB】vb如何post提交

2025-02-24 08:03:57
推荐回答(2个)
回答1:

vb的inet、webbrowser、winsock控件都可以post
你可以在百度中搜索相应控件的post
一般要先用抓包工具得到post数据,再在程序中按样post

回答2:

一、用Webbrowser
代码:Webbrowser.navigate ("http://xxx/1.htm?name=apple&id=001")
二、用Inet (注意数据接收方式是POST还是GET ,具体的方式是在1.htm的

...

代码:(post方式)
1、设定数据头:
strSendHeader = "POST /hotbuy/myhotbuy.php HTTP/1.1" & vbCrLf
strSendHeader = strSendHeader & "Content-Type: application/x-www-form-urlencoded " & vbCrLf
strSendHeader = strSendHeader & "Content-Length: " & iSendLength & vbCrLf
2、设定要发的数据:
strsenddata= "name=apple&id=001"
3、发送地址:
strsendadd="http://xxx/1.htm
3、发送数据:
Inet.execute strsendadd,"POST",strsenddata,strsendHead
Inet (Get方式) GET方式比POST简单的多
代码:
strsenddata = "http://xxx/1.htm?apple&id=001"
Inet.execute strsenddata,"GET"
三、用winsock
1、设定数据头:
strSendHeader = "POST /hotbuy/myhotbuy.php HTTP/1.1" & vbCrLf
strSendHeader = strSendHeader & "Content-Type: application/x-www-form-urlencoded " & vbCrLf
strSendHeader = strSendHeader & "Content-Length: " & iSendLength & vbCrLf
2、设定要发的数据:
strsenddata= "name=apple&id=001"
strSend = strSendHeader & vbCrLf & strSendData
3、发送地址:
strsendadd="http://xxx/1.htm
4、建立连接
Winsock.RemoteHost = "http:/xxx/"
Winsock.RemotePort = 80
Winsock.Protocol = sckTCPProtocol
winsock.connect
Winsock1.SendData strsend
Winsock.close

首先,要构造一个HTTP头,可详细了解下HTTP协议数据头结构。HTTP头是以空行结束的,即从数据开始到第一个空行之间的数据是HTTP数据头部。
这里,用POST提交数据,HTTP头部的下面三项是不可少的:

POST /vote.asp HTTP/1.1
Content-Type: application/x-www-form-urlencoded
Host: www.***.cn

对于GET方式提交,则不需要Content-Type这项。每行以一个回车符和一个换行符结束,VB里就是 vbCrLf 。如果访问需要登陆的网页,则Cookies 这项是不可少的。
对于POST提交,通过抓包的数据可以看到,第一个空行之后(即HTTP数据头之后)还有其他内容,这里是
VoteOption=7&VoteType=Single&Action=Vote&ID=10
这就是提交的数据,HTTP头部有Content-Type: application/x-www-form-urlencoded 这项,服务器就会处理这些数据,数据格式和GET提交是一样的,即
名称2=值2&名称2=值2

要发送这样的数据,先构造一个HTTP头

dim str as string
str="POST /vote.asp HTTP/1.1" & vbCrLf
str=str & "Content-Type: application/x-www-form-urlencoded " & vbCrLf
str=str & "Host: www.***.cn" & vbCrLf
str=str & vbCrLf '这里加个空行
str=str & "VoteOption=7&VoteType=Single&Action=Vote&ID=10 "

然后用 Winsock控件发送这个字符串就行了。当然,先要和服务器建立连接,因为HTTP用的是TCP协议。
要更详细的内容,自己查下HTTP协议相关的资料。