Post VB6使用内容类型表单数据发布到服务器不';我没有收到参数

Post VB6使用内容类型表单数据发布到服务器不';我没有收到参数,post,request,vb6,xmlhttprequest,Post,Request,Vb6,Xmlhttprequest,我试图使用Content Type=表单数据向服务器发出post请求。这是在VB6中实现的(是的,visual Basic 6)。 请求调用成功,但服务器无法获取参数 为了简单起见,我正在httpbin.org上进行测试 Dim msxml As msxml.XMLHTTPRequest Dim data As String Dim boundary As String Set msxml = New msxml.XMLHTTPRequest boundary = "----WebKitF

我试图使用Content Type=表单数据向服务器发出post请求。这是在VB6中实现的(是的,visual Basic 6)。 请求调用成功,但服务器无法获取参数

为了简单起见,我正在httpbin.org上进行测试

Dim msxml As msxml.XMLHTTPRequest
Dim data As String
Dim boundary As String

Set msxml = New msxml.XMLHTTPRequest


boundary = "----WebKitFormBoundary7MA4YWxkTrZu0gW"

msxml.Open "POST", "http://httpbin.org/post", False

msxml.setRequestHeader "Content-Type", "multipart/form-data;Charset=UTF-8; boundary=" & boundary

data = ""
data = data & boundary & vbCrLf
data = data & "Content-Disposition: form-data; name=""param1""" & vbCrLf
data = data & vbCrLf
data = data & "data for param1" & vbCrLf

data = data & boundary & vbCrLf
data = data & "Content-Disposition: form-data; name=""param2""" & vbCrLf
data = data & vbCrLf
data = data & "other data for param2" & vbCrLf

data = data & boundary & "--"

msxml.Send data

Debug.Print msxml.responseText
得到的答复是:

{
  "args": {},
  "data": "",
  "files": {},
  "form": {},
  "headers": {
    "Accept": "*/*",
    "Accept-Encoding": "gzip, deflate",
    "Accept-Language": "es",
    "Cache-Control": "no-cache",
    "Connection": "close",
    "Content-Length": "216",
    "Content-Type": "multipart/form-data;Charset=UTF-8; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW",
    "Host": "httpbin.org",
    "User-Agent": "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; .NET4.0C; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; .NET4.0E)"
  },
  "json": null,
  "origin": "181.45.250.169",
  "url": "http://httpbin.org/post"
}
如您所见,“form”属性为空

预期的答复:

"form": {
    "param1": "data for param1",
    "param2": "other data for param2"
},
我已经尝试过WinHttpRequest和其他程序,结果总是一样的

有什么建议吗?

在这行后面

data = data & "other data for param2" & vbCrLf
msxml.Send data
在这条线之前

data = data & "other data for param2" & vbCrLf
msxml.Send data
试一试推杆

data = data & boundary & "--"
以语法有效的方式结束窗体的正文。

如何更改:

boundary = "----WebKitFormBoundary7MA4YWxkTrZu0gW"
致:

。。。取而代之,然后在需要它的地方,在这个值前面加上“-”(而不是“----”)

“-”前缀不属于此处,您有两个前缀在一行中:

msxml.setRequestHeader "Content-Type", "multipart/form-data;Charset=UTF-8; boundary=" & boundary

通过将“-”加倍,你似乎把自己搞糊涂了。连字符不是边界值的一部分。

感谢所有帮助我的人

除了边界中的错误之外,还有一件我尝试过但没有成功的事情,因为我缺少参数的内容类型

添加内容类型和正确的边界字符串后,post工作

Dim msxml As msxml.XMLHTTPRequest
Dim data As String
Dim boundary As String

Set msxml = New msxml.XMLHTTPRequest

boundary = "MyCustomBoundary7MA4YWxkTrZu0gW"

msxml.Open "POST", "http://httpbin.org/post", False

msxml.setRequestHeader "Content-Type", "multipart/form-data;Charset=UTF-8; boundary=" & boundary

data = ""
data = data & "--" & boundary & vbCrLf
data = data & "Content-Disposition: form-data; name=""param1""" & vbCrLf
data = data & "Content-Type: text/plain" & vbCrLf & vbCrLf
data = data & "data for param1" & vbCrLf

data = data & "--" & boundary & vbCrLf
data = data & "Content-Disposition: form-data; name=""param2""" & vbCrLf
data = data & "Content-Type: text/plain" & vbCrLf & vbCrLf
data = data & "other data for param2" & vbCrLf

data = data & "--" & boundary & "--"

msxml.Send data

Debug.Print msxml.responseText

为什么在一个问题上贴标签?预期的回答是什么?vba标签,我的错误。我添加了预期的响应。你的边界搞错了。检查它是如何正确完成的。