获取 "Bad Request. Invalid request header"

Getting "Bad Request. Invalid request header"

下面是我使用 VBScript 发送 HTTP 请求的代码。

Option Explicit

Dim objHTTP, url, Hpost
Set objHTTP = CreateObject("Microsoft.XMLHTTP")    
url = "http://localhost:8080/xyz/processKey?key=abcd"
objHTTP.open "POST", url, False
objHTTP.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
objHTTP.send
WScript.Echo objHTTP.responseText

错误:

HTTP 400 Bad Request
Content-Length must be > 0

[编辑:采纳@Lankymart 的评论]

您的请求似乎不是纯粹的 "HTTP POST" 或 "HTTP GET" 请求。

对于 "HTTP POST" 请求:

  • 参数不应该在URL,应该在正文
  • 似乎服务器需要一个 Content-Length

示例:

Option Explicit
Dim objHTTP, url, param
Set objHTTP = CreateObject("Microsoft.XMLHTTP")    
url = "http://localhost:8080/xyz/processKey"
param = "key=abcd"
objHTTP.open "POST", url, False
objHTTP.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
objHTTP.send param
WScript.Echo objHTTP.responseText

对于 "HTTP GET" 请求

  • 参数必须嵌入URL
  • 发送必须为空

示例:

Option Explicit
Dim objHTTP, url, param
Set objHTTP = CreateObject("Microsoft.XMLHTTP")    
url = "http://localhost:8080/xyz/processKey"
param = "key=abcd"
objHTTP.open "GET", url + "?" + param, False
objHTTP.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
objHTTP.send
WScript.Echo objHTTP.responseText