Ошибка 400 с API поиска новостей Bing
У меня возникла пара проблем с API поиска новостей Bing, самый странный ищет по категории, согласно документации, категория должна быть строкой, я нашел несколько ресурсов, для которых он принимает значения, поэтому я решил пойти с консоль ( https://dev.cognitive.microsoft.com/docs/services/56b43f72cf5ff8098cef380a/operations/56b449fbcf5ff81038d15cdf/console). Как только вы выбрали категорию и поставили ее в качестве ключа, она работает нормально. Проблема в том, что когда я копирую тот же URL-адрес из консоли в почтальон, я использую тот же ключ и получаю заголовок "400 Bad Request" с таким телом:
{
"_type": "ErrorResponse",
"errors": [
{
"code": "RequestParameterInvalidValue",
"message": "Parameter has invalid value.The category parameter is invalid.",
"parameter": "category",
"value": "Entertainment"
}
]
}
Есть идеи, что я делаю не так?
1 ответ
Вот очень хакерский обходной путь: так как запрос нормально работает через консоль разработчика, я проверил запрос и попытался повторить его, подумав, что curl работает нормально, команда выглядит следующим образом:
curl 'https://dev.cognitive.microsoft.com/console/query' -H 'Content-Type: application/json' --data-binary '{"httpMethod":"GET","host":"api.cognitive.microsoft.com","scheme":"https","path":"bing/v5.0/news/?Category=Entertainment","headers":[{"name":"Host","value":"api.cognitive.microsoft.com","inputTypeValue":"text","revealed":false,"options":null,"required":true,"readonly":true,"custom":false},{"name":"Ocp-Apim-Subscription-Key","value":"<your key value>","inputTypeValue":"password","revealed":false,"options":[],"required":true,"readonly":false,"custom":true,"secret":true}],"parameters":[{"name":"Category","value":"Entertainment","inputType":"text","required":false,"options":["Business","Entertainment","Health","Politics","ScienceAndTechnology","Sports","US/UK","World"],"custom":false,"description":"<p>Specifies which category of news articles the caller wants returned.</p>\n","typeName":"string"}],"body":""}'
Данные json, которые я отправляю, это (скопировано из команды выше)
{"httpMethod": "GET", "хост": "api.cognitive.microsoft.com", "схема": "https", "путь": "bing/v5.0/news/?Category=Entertainment", "headers": [{ "name": "Host", "value": "api.cognitive.microsoft.com", "inputTypeValue": "text", "connected": false, "options": null, "обязательно" ": true," только для чтения ": true, "custom": false }, { "name": "Ocp-Apim-Subscription-Key", "value": "", "inputTypeValue": " пароль "," открыл ": false, "options": [], "required": true, "readonly": false, "custom": true, "secret": true }], "parameters": [{ "name": "Category", "value": "Entertainment", "inputType": "text", "required": false, "options": ["Business", "Entertainment", "Health", "Politics", "ScienceAndTechnology", "Sports", "US/UK", "World"], "custom": false, "description": "
Указывает, какую категорию новостных статей хочет вернуть вызывающий абонент.
\ n "," typeName ":" string "}]," body ":" "}
Сейчас я отмечу это как правильное, поскольку не могу найти другого решения