Запрос HTTP GET выдает ошибку 500 в java

Я пытаюсь использовать API-интерфейс «getMessages» Office 365. Я пробовал следовать URL-адресу и заголовку авторизации в java. Но он дает код ОТВЕТА 500, что является внутренней ошибкой сервера. Но когда я попробовал то же самое из POSTMAN REST CLIENT, все сработало отлично. Может ли кто-нибудь предложить, что я делаю неправильно?

URL url = new URL("https://outlook.office365.com/api/v1.0/me/messages/"); 
        String asB64 = "Basic "+new String(new Base64().encode(user+":"+password.getBytes()));
        println "asB64 : " + asB64;
        HttpsURLConnection urlConnection = (HttpsURLConnection) url.openConnection();
        urlConnection.setRequestProperty ("Authorization", asB64);
        urlConnection.setDoOutput(true);
        urlConnection.setRequestMethod("GET");
        urlConnection.setDoInput(true);
        urlConnection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded,charset=UTF-8");

        PrintWriter printWriter = new PrintWriter(urlConnection.getOutputStream());

        printWriter.flush();

        InputStream inputStream = urlConnection.getInputStream();
        String contentType = urlConnection.getContentType();
        println "output : " + urlConnection.getResponseCode() + " message : " + urlConnection.getResponseMessage() + " error : " + urlConnection.getErrorStream();

Ниже должны быть выходные данные запроса (POSTMAN REST CLIENT дает следующий ответ как есть):

{"@odata.context":"https://outlook.office365.com/api/v1.0/$metadata#Me/Messages","value":[{"@odata.id":"https://outlook.office365.com/api/v1.0/Users('[email protected]')/Messages('AAMkADdkMTEyY2RhLTA5YTItNDM0OS05NTVjLWZhNGI2OWUxZjBkOABGAAAAAACFIzMHuQuLQ6LXFS-gt6NSBwBgChXEzbNhRbE9LyPei8StAAAAAAEMAABgChXEzbNhRbE9LyPei8StAAACWUu4AAA=')","@odata.etag":"W/\"CQAAABYAAABgChXEzbNhRbE9LyPei8StAAACWUs2\"","Id":"AAMkADdkMTEyY2RhLTA5YTItNDM0OS05NTVjLWZhNGI2OWUxZjBkOABGAAAAAACFIzMHuQuLQ6LXFS-gt6NSBwBgChXEzbNhRbE9LyPei8StAAAAAAEMAABgChXEzbNhRbE9LyPei8StAAACWUu4AAA=","ChangeKey":"CQAAABYAAABgChXEzbNhRbE9LyPei8StAAACWUs2","Categories":[],"DateTimeCreated":"2014-11-25T06:34:35Z","DateTimeLastModified":"2014-11-25T06:34:35Z","Subject":"test me","BodyPreview":"Hello..\r\n\r\n- Piyusha","Body":{"ContentType":"HTML","Content":"\r\n\r\n\r\n\r\n\r\n\r\n\r\n
\r\n
Hello..

\r\n


\r\n
\r\n-         \r\nPiyusha

\r\n


\r\n
\r\n\r\n\r\n"},"Importance":"Normal","HasAttachments":false,"ParentFolderId":"AAMkADdkMTEyY2RhLTA5YTItNDM0OS05NTVjLWZhNGI2OWUxZjBkOAAuAAAAAACFIzMHuQuLQ6LXFS-gt6NSAQBgChXEzbNhRbE9LyPei8StAAAAAAEMAAA=","From":{"EmailAddress":{"Address":"[email protected]","Name":"Piyusha"}},"Sender":{"EmailAddress":{"Address":"[email protected]","Name":"Piyusha"}},"ToRecipients":[{"EmailAddress":{"Address":"[email protected]","Name":"Test2"}}],"CcRecipients":[],"BccRecipients":[],"ReplyTo":[],"ConversationId":"AAQkADdkMTEyY2RhLTA5YTItNDM0OS05NTVjLWZhNGI2OWUxZjBkOAAQADdgtnhCYExDhAoxDCJGdbk=","DateTimeReceived":"2014-11-25T06:34:35Z","DateTimeSent":"2014-11-25T06:33:57Z","IsDeliveryReceiptRequested":null,"IsReadReceiptRequested":false,"IsDraft":false,"IsRead":false},{"@odata.id":"https://outlook.office365.com/api/v1.0/Users('[email protected]')/Messages('AAMkADdkMTEyY2RhLTA5YTItNDM0OS05NTVjLWZhNGI2OWUxZjBkOABGAAAAAACFIzMHuQuLQ6LXFS-gt6NSBwBgChXEzbNhRbE9LyPei8StAAAAAAEMAABgChXEzbNhRbE9LyPei8StAAACWUu3AAA=')","@odata.etag":"W/\"CQAAABYAAABgChXEzbNhRbE9LyPei8StAAACWUs1\"","Id":"AAMkADdkMTEyY2RhLTA5YTItNDM0OS05NTVjLWZhNGI2OWUxZjBkOABGAAAAAACFIzMHuQuLQ6LXFS-gt6NSBwBgChXEzbNhRbE9LyPei8StAAAAAAEMAABgChXEzbNhRbE9LyPei8StAAACWUu3AAA=","ChangeKey":"CQAAABYAAABgChXEzbNhRbE9LyPei8StAAACWUs1","Categories":[],"DateTimeCreated":"2014-11-24T05:06:24Z","DateTimeLastModified":"2014-11-24T05:06:24Z","Subject":"Test Email for API","BodyPreview":"Hi,\r\nThis is test email for API testing\r\n\r\n- Piyusha","Body":{"ContentType":"HTML","Content":"\r\n\r\n\r\n\r\n\r\n\r\n\r\n
\r\n


\r\n
Hi,

\r\n
This is test email for API testing

\r\n


\r\n
\r\n-         \r\nPiyusha

\r\n


\r\n
\r\n\r\n\r\n"},"Importance":"Normal","HasAttachments":false,"ParentFolderId":"AAMkADdkMTEyY2RhLTA5YTItNDM0OS05NTVjLWZhNGI2OWUxZjBkOAAuAAAAAACFIzMHuQuLQ6LXFS-gt6NSAQBgChXEzbNhRbE9LyPei8StAAAAAAEMAAA=","From":{"EmailAddress":{"Address":"[email protected]","Name":"Piyusha"}},"Sender":{"EmailAddress":{"Address":"[email protected]","Name":"Piyusha"}},"ToRecipients":[{"EmailAddress":{"Address":"[email protected]","Name":"Test2"}}],"CcRecipients":[],"BccRecipients":[],"ReplyTo":[],"ConversationId":"AAQkADdkMTEyY2RhLTA5YTItNDM0OS05NTVjLWZhNGI2OWUxZjBkOAAQAJE40Qula0HBl35-_7JOrmM=","DateTimeReceived":"2014-11-24T05:06:24Z","DateTimeSent":"2014-11-24T05:05:55Z","IsDeliveryReceiptRequested":null,"IsReadReceiptRequested":false,"IsDraft":false,"IsRead":false}]}

person user3853055    schedule 25.11.2014    source источник
comment
Я настоятельно рекомендую вам сравнить заголовки, представленные двумя клиентами. Если что-то непонятно, разместите здесь заголовки (без заголовков аутентификации, конечно). Я также предлагаю вам использовать библиотеку ADAL для проверки подлинности.   -  person Michael Mainer    schedule 25.11.2014


Ответы (1)


Я решил эту проблему с помощью Unirest для Java .

Я использовал следующий код:

HttpResponse<JsonNode> response = Unirest.get("https://outlook.office365.com/api/v1.0/me/messages").basicAuth(user, password).asJson();

println "response : " + response.getBody();

У меня работал код выше одного вкладыша с небольшими изменениями зависимостей. :)

person user3853055    schedule 26.11.2014