Плохой запрос 400 при вызове API в Microsoft Graph

Ошибка, которую я получаю от Microsoft Graph API, такова:

error = {
  "code": "BadRequest",
  "innerError": {
    "date": "2017-04-10T19:37:08",
    "request-id": "973641dd-b150-4406-9f3b-fbcf6f7e5aa1"
  },
  "message": "The MIME type 'text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2' requires a '/' character between type and subtype, such as 'text/plain'."
}

Я могу успешно получить с конечной точки https://graph.microsoft.com/v1.0/me/contacts при использовании POSTman, однако при использовании библиотеки scribe-java OAuthRequest я получаю эту ошибку.
Мой запрос направляется по URL-адресу https://graph.microsoft.com/v1.0/me/contacts с двумя заголовками. Авторизация -> Носитель [токен]
Content-Type -> application / json


person dpark    schedule 10.04.2017    source источник
comment
Сопоставьте заголовки запросов, которые вы отправляете, с почтальоном и вашим приложением. Очевидно, есть различия.   -  person Matt Clark    schedule 10.04.2017
comment
Привет, Марк, в настоящее время мой POSTman и мой запрос с использованием библиотеки java совпадают. i.imgur.com/Pab6ejb.png вот как выглядит мой запрос почтальона.   -  person dpark    schedule 10.04.2017
comment
Привет, Джон, щелкните правой кнопкой мыши в браузере и проверьте необработанный банковский перевод. Сервер также может ожидать User-Agent или что-то еще.   -  person Matt Clark    schedule 10.04.2017
comment
Я не вижу этого в запросе почтальона. Единственный дополнительный заголовок, который включен в почтальон, - это Postman-Token - ›, но это не должно отличаться от вызова API к графику microsoft.   -  person dpark    schedule 10.04.2017
comment
Возможно, замените * на */* в типе MIME вашего запроса.   -  person Przemek    schedule 10.04.2017
comment
Не могли бы вы опубликовать код, в котором вы добавляете заголовки, в запрос приложения? Мне интересно, сбежали ли они или что-то в этом роде.   -  person piisexactly3    schedule 11.04.2017


Ответы (3)


Попробуйте явно указать заголовок «Принять» в своем запросе. POSTman может по умолчанию использовать [Accept = text / html, image / gif, image / jpeg, *; q = .2, /; q = .2]

person Nick    schedule 19.04.2017
comment
Дружище, ты гений, я провел с этим 3 часа и никогда не думал о Accept. Спасибо. - person Praveen Premaratne; 15.03.2018

Привет, я получал ту же ошибку, когда пытался создать нового пользователя в AzureAD с помощью графического API. Я решил свою проблему, изменив заголовок подтверждения на «Принять»: «text / html, application / json». Довожу до вашего сведения

person user2775587    schedule 05.05.2020

Оказывается, библиотека scribe-java неправильно настроила запрос. Переход на apache HttpClient и HttpGet решил проблему для меня.

person dpark    schedule 26.04.2017
comment
На самом деле это класс OpenJDK HttpURLConnection, который устанавливает эту недопустимую строку приема. См. bugs.openjdk.java.net/browse/JDK-8163921. - person Emil; 11.12.2020