获取 "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
下面是我使用 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