Странный лимит на пакетное VIN-декодирование NHTSA через WinHTTPRequest
Я сталкиваюсь с проблемой (HTTP STATUS 400 Bad Request), использующей код для декодирования VIN, если я отправляю более 12, но если я отправляю список из более 100 путем вставки на сайт, я получаю результаты.
Я использую следующий код для отправки списка VIN, чтобы получить информацию от вин-декодера NHTSA ( 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, поэтому вполне возможно, что я делаю действительно глупую ошибку.
1 ответ
Ваш запрос недействителен, потому что ваш VINX
значения не имеют ключа (DATA
).
Вы можете убедиться в этом, используя инструменты разработчика в своем браузере при тестировании примера ссылки. В Firefox (другие похожи) вам нужен 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"