Как получить / отправить ресурс с OAuth 2.0 в JAVA (код состояния 415) - PullRequest
1 голос
/ 04 июля 2019

У меня есть реализация oauth 2.0 на Java, я хотел попробовать кое-что с Shopware 6 API. Я могу получить токен доступа без проблем и, насколько я вижу, я делаю все правильно, чтобы запросить ресурс с этим access_token. В заголовке запроса GET я поместил заголовок «Авторизационный носитель» + access_token, а также заголовок «Content-Type», «application / json».

HttpGet get = new HttpGet(resourceURL);
        get.addHeader("Content-Type", "application/json");

и позже

if (isValid(accessToken)) {
                        // update the access token
                        // System.out.println("New access token: " + accessToken);
                        oauthDetails.setAccessToken(accessToken);
                        // remove the old auth header
                        get.removeHeaders(OAuthConstants.AUTHORIZATION);
                        // add the new auth header
                        get.addHeader(OAuthConstants.AUTHORIZATION,
                                getAuthorizationHeaderForAccessToken(oauthDetails.getAccessToken()));
                        get.releaseConnection();
                        response = client.execute(get);
                        code = response.getStatusLine().getStatusCode();

Код ошибки, который я всегда получаю, - 415. Это полный ответ:

HttpResponseProxy{HTTP/1.1 415 Unsupported Media Type [Date: Thu, 04 Jul 2019 08:45:38 GMT, Server: Apache/2.4.25 (Debian), Cache-Control: no-cache, private, Access-Control-Allow-Origin: *, Access-Control-Allow-Methods: GET,POST,PUT,PATCH,DELETE, Access-Control-Allow-Headers: Content-Type,Authorization,sw-context-token,sw-access-key,sw-language-id,sw-version-id, sw-version-id: , sw-language-id: , sw-context-token: , x-frame-options: deny, X-Debug-Token: c1766c, X-Debug-Token-Link: http://localhost:8000/_profiler/c1766c, X-Robots-Tag: noindex, Vary: Authorization, Keep-Alive: timeout=5, max=100, Connection: Keep-Alive, Transfer-Encoding: chunked, Content-Type: application/json] ResponseEntityProxy{[Content-Type: application/json,Chunked: true]}}

Конечной точкой, которую я пытаюсь получить, является конечная точка "http://localhost:8000/api/v1/category/". Если я делаю все это с Бессонницей / Почтальоном, я получаю информацию об ожидаемой категории. У кого-нибудь есть идеи, что может быть не так? Что мне здесь не хватает?

Ответы [ 2 ]

0 голосов
/ 08 июля 2019

Как отметил в комментарии nuriselcuk, отсутствующим был заголовок Accept. Я добавил

post.addHeader("Accept", "application/json");

и теперь работает нормально.

0 голосов
/ 08 июля 2019

Пожалуйста, добавьте следующий заголовок

'Accept': 'application/json'
...