通过 WinHTTPRequest 对 NHTSA 批量 VIN 解码的奇怪限制
Weird limit on NHTSA batch VIN decode via WinHTTPRequest
如果我发送超过 12 个 VIN,我会遇到一个问题(HTTP 状态 400 错误请求)使用代码解码 VIN,但如果我通过粘贴到网站发送超过 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 的新手,所以我很可能犯了一个非常愚蠢的错误。
您的请求无效,因为您的VINX
值没有键(DATA
)。
您可以在测试您的示例时使用浏览器上的开发人员工具看到这一点 link。在 Firefox 中(其他类似)你需要在 Console
的开发工具中打开 Net
->Log
,然后你可以看到 POST
[=19 上发送的数据=]
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"
如果我发送超过 12 个 VIN,我会遇到一个问题(HTTP 状态 400 错误请求)使用代码解码 VIN,但如果我通过粘贴到网站发送超过 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 的新手,所以我很可能犯了一个非常愚蠢的错误。
您的请求无效,因为您的VINX
值没有键(DATA
)。
您可以在测试您的示例时使用浏览器上的开发人员工具看到这一点 link。在 Firefox 中(其他类似)你需要在 Console
的开发工具中打开 Net
->Log
,然后你可以看到 POST
[=19 上发送的数据=]
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"