【问题标题】:Weird limit on NHTSA batch VIN decode via WinHTTPRequest通过 WinHTTPRequest 对 NHTSA 批量 VIN 解码的奇怪限制
【发布时间】:2018-02-02 23:14:00
【问题描述】:

如果我发送超过 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 的新手,所以很可能我犯了一个非常愚蠢的错误。

【问题讨论】:

    标签: vba decode http-status-code-400 vin


    【解决方案1】:

    您的请求无效,因为您的 VINXvalues 没有密钥 (DATA)。

    在测试示例链接时,您可以使用浏览器上的开发人员工具来查看这一点。在火狐(其他类似)你需要在Console的开发工具中打开Net->Log,然后你可以看到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"
    

    【讨论】:

    • 感谢您的回复,并解释了我如何进一步调查该问题以了解不同之处。我使用的是 IE,并且笔记本电脑上确实有 chrome,但只是没想到要检查它,所以我感谢您的帮助。到目前为止,我刚刚对 Web 服务进行了一些小实验。这很有帮助。
    猜你喜欢
    • 1970-01-01
    • 2015-09-13
    • 1970-01-01
    • 2017-01-06
    • 2020-04-20
    • 2019-09-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多