Доступ к профилю пользователя на графике Microsoft с помощью OKHttp возвращает специальные символы - PullRequest
1 голос
/ 04 октября 2019

Я пытаюсь получить свой профиль пользователя из graph.microsoft, как показано здесь . Я использую Java-библиотеку OKHttp для достижения этой цели, однако сервер возвращает специальные символы в ответе. Я проверил свои заголовки и включил «Accept-Encoding: gzip». Однако проблема не решена. См. Код под;

Java-код

Request userProfileRequest = new Request.Builder()
     .url("https://graph.microsoft.com/v1.0/me")
     .get()
     .addHeader("Authorization", "Bearer "+accessTkn)
     .addHeader("Accept", "*/*")
     .addHeader("Cache-Control", "no-cache")
     .addHeader("Content-Type", "application/json;odata.metadata=minimal;odata.streaming=true;IEEE754Compatible=false;charset=utf-8")
     .addHeader("Accept-Encoding", "gzip")
     .addHeader("Connection", "keep-alive")                                 
     .addHeader("cache-control", "no-cache")
     .build();

Response userProfileResponse = client2.newCall(userProfileRequest).execute();           
System.out.println("Authorization is  " +userProfileRequest.header("Authorization"));           
System.out.println(userProfileResponse.body().string());

Консольный вывод enter image description here

Ответы [ 2 ]

2 голосов
/ 04 октября 2019

OkHttp делает прозрачное сжатие для вас. Однако, явно указав "Accept-Encoding: gzip", вы указываете, что хотите сжать gzip, и будете обрабатывать его самостоятельно.

Удаление всего, кроме Авторизации, как вы сделали в своем ответе, является правильным решением.

0 голосов
/ 04 октября 2019

Решение, которое работало для меня, состояло в том, чтобы удалить все заголовки, кроме «Авторизация»

Java Code

Request userProfileRequest = new Request.Builder()
 .url("https://graph.microsoft.com/v1.0/me")
 .get()
 .addHeader("Authorization", "Bearer "+accessTkn)                                       
 .build();
...