Vb6 Post方法+;WinHttpRequest+;多部分/表单数据

Vb6 Post方法+;WinHttpRequest+;多部分/表单数据,vb6,multipartform-data,winhttprequest,Vb6,Multipartform Data,Winhttprequest,我被难住了,为什么这不起作用,我似乎找不到任何问题 这是代码 Public Const MULTIPART_BOUNDARY = "speed" Function getBalance() As String Dim sEntityBody As String Dim postBody() As Byte Dim username As String Dim password As String username = CStr(frmMain.txtUser.text) password =

我被难住了,为什么这不起作用,我似乎找不到任何问题

这是代码

Public Const MULTIPART_BOUNDARY = "speed"
Function getBalance() As String
Dim sEntityBody As String
Dim postBody() As Byte
Dim username As String
Dim password As String

username = CStr(frmMain.txtUser.text)
password = CStr(frmMain.txtPass.text)

sEntityBody = "--" & MULTIPART_BOUNDARY & vbCrLf
sEntityBody = sEntityBody & "Content-Disposition: form-data; name=""function""" & vbCrLf & vbCrLf & "balance" & vbCrLf
sEntityBody = sEntityBody & "--" & MULTIPART_BOUNDARY & vbCrLf
sEntityBody = sEntityBody & "Content-Disposition: form-data; name=""username""" & vbCrLf & vbCrLf & username & vbCrLf
sEntityBody = sEntityBody & "--" & MULTIPART_BOUNDARY & vbCrLf
sEntityBody = sEntityBody & "Content-Disposition: form-data; name=""password""" & vbCrLf & vbCrLf & password & vbCrLf
sEntityBody = sEntityBody & "--" & MULTIPART_BOUNDARY & "--" & vbCrLf

postBody = StrConv(sEntityBody, vbFromUnicode)

Dim xhr As Object
Set xhr = CreateObject("WinHttp.WinHttpRequest.5.1")
xhr.Option(WinHttpRequestOption_EnableRedirects) = False
If xhr Is Nothing Then Set xhr = CreateObject("WinHttp.WinHttpRequest")
If xhr Is Nothing Then Set xhr = CreateObject("MSXML2.ServerXMLHTTP")
If xhr Is Nothing Then Set xhr = CreateObject("Microsoft.XMLHTTP")
xhr.open "POST", "http://poster.example.com", False

xhr.setRequestHeader "User-Agent", "Alalala"
xhr.setRequestHeader "Content-Type", "multipart/form-data; boundary=" & MULTIPART_BOUNDARY
xhr.setRequestHeader "Content-Length", Len(sEntityBody)
xhr.send "" + sEntityBody 'postBody 'URLEncode(sEntityBody)

    If xhr.Status = 200 Then
        getBalance = xhr.responseText
    Else
        frmMain.addToChatbox "Failed at getting response from blah ErrCode:" & xhr.Status
    End If
End Function
现在,下面的方法可以工作了(尽管它只是一个HTML表单)


这是一个包嗅探。(将主机等更改为示例后)

POST/HTTP/1.1..用户代理: Alalala..内容类型: 多部分/表格数据; 边界=速度..内容长度: 233..接受:/…主机:poster.example.com..连接: 保持活动状态…--速度..内容处理:表单数据; name=“function”…平衡..--速度..内容处理: 表格数据; name=“username”…等等--速度..内容处理: 表格数据; name=“password”…废话--speed--

响应为空

HTTP/1.1200确定日期:10月7日星期四 2010年20:31:20 GMT..Server: Apache..内容长度:0..连接: 关闭..内容类型:text/html; 字符集=UTF-8

p.S.>不必发送带有值Send的submit按钮,因此,如果有人想知道,也不必发送。 我从嗅探中注意到,它可能是以一个数据包的形式发送头+post数据(上传数据),而firefox/chrome则以两个单独的数据包的形式发送。


谢谢你

拼写错误内容处置必须是内容处置是的,多亏了我6年来的痛苦?大概7个小时

终于解决了

<form 
 method="post" 
 action="http://poster.example.com/" 
 enctype="multipart/form-data">
 <input type="hidden" name="function" value="balance">
 <input type="text"   name="username" value="blah">
 <input type="text"   name="password" value="blah">
 <input type="submit" value="Send">
</form>