2

如果我发送超过 12 个 VIN,我会遇到问题(HTTP STATUS 400 Bad Request),但如果我通过粘贴到网站发送超过 100 个的列表,我会得到结果。

我正在使用以下代码发送 VIN 列表以从 NHTSA vin 解码器获取信息(https://vpic.nhtsa.dot.gov/api/,批量解码 VIN(平面格式))

request = "VIN1;VIN2;VIN3; ...?format=xml"  <- just example to show format of data

Set http = New WinHTTP.WinHttpRequest
http.settimeouts 30000,30000,30000,30000
http.open "POST","https://vpic.nhtsa.dot.gov/api/vehicles/DecodeVinValuesBatch", False
http.SetRequestHeader "Content-Type", "text/plain"
http.send request

response = http.ResponseText 

我认为这可能是一些长度限制,所以我尝试将内容长度设置为正在发送的字符串的长度,但这似乎没有帮助。我已经搜索了很多,但找不到任何特别可以解释的东西。我想也许 NHTSA 对可以发回的内容有限制,但是因为我可以手动将列表粘贴到网站中并获得没有多大意义的结果。它以这种方式提供相同的 XML 格式数据。我不知道还有什么可以尝试的,所以希望其他人会有其他的想法。我是使用 WinHTTPRequest 的新手,所以很可能我犯了一个非常愚蠢的错误。

4

1 回答 1

0

您的请求无效,因为您的VINX值没有键 ( DATA)。

在测试示例链接时,您可以使用浏览器上的开发人员工具看到这一点。火狐(其他类似)需要开发工具的Net->Log打开Console,然后就可以看到数据发送了POST

Rawdata:
DATA=5UXWX7C5*BA%2C2011%3B+5YJSA3DS*EF+&format=XML

根据这个你的请求字符串应该是:

request = "DATA=VIN1;VIN2;VIN3; ...&format=xml" ' Post array elements are separated by &

您的内容类型:

http.SetRequestHeader "Content-Type", "application/x-www-form-urlencoded"
于 2017-08-25T04:40:25.550 回答