HttpURLConnection авторизация отправки заголовка

Я изо всех сил пытаюсь успешно отправлять запросы GET с заголовком авторизации, используя HttpURLConnection. Возвращается код ошибки 400.

Я добился успеха с OKHttpClient, но попросил не использовать никаких зависимостей.

Вот мой код:

public static String GETReqUserProfiles() throws IOException {

    URL url = new URL(UrlString);
    HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();

    urlConnection.setDoOutput(true);
    urlConnection.setRequestMethod("GET");
    urlConnection.setRequestProperty("Content-Type", "application/" + "json");
    urlConnection.setRequestProperty("authorization", "Bearer " + MANAGEMENT_TOKEN);

    urlConnection.connect();

    if (urlConnection.getResponseCode() != 200) {
        throw new RuntimeException("Failed : HTTP error code : "
                + urlConnection.getResponseCode());
    }

    String assembledOutput = "";

    BufferedReader responseBuffer = new BufferedReader(new InputStreamReader(
            (urlConnection.getInputStream())));

    String output;
    System.out.println("Output from Server:\n");
    while ((output = responseBuffer.readLine()) != null) {
        System.out.println(output);
        assembledOutput = assembledOutput + output;
    }

    urlConnection.disconnect();

    return assembledOutput;
}

ИЗМЕНИТЬ:

Все работает -

Проблема была в:

urlConnection.setDoOutput(true);

setDoOutput(true) : объявляет отправку тела с запросом. Запросы GET не требуют тела, поэтому его можно установить в false или закомментировать. Вместо этого это используется для POST, PATCH, PUT и т. д. (запросы, требующие тела).

Также обратите внимание:

urlConnection.setRequestMethod("GET");

Не нужно специально объявлять при отправке запроса GET (хотя я оставил в коде для удобства чтения)

Я подозреваю, что если вы включите setDoOutput(true) и не укажете метод запроса, метод по умолчанию будет POST-запросом.


person ccdle12    schedule 07.04.2017    source источник
comment
поместите urlConnection.connect(); после setRequestProperty   -  person AbhayBohra    schedule 07.04.2017
comment
Привет Абхай, спасибо, я включил коннект и все равно возвращает 400 :(   -  person ccdle12    schedule 07.04.2017
comment
@AbhayBohra Почему? Он выполняется автоматически.   -  person user207421    schedule 29.02.2020
comment
Тот факт, что setDoOutput(true) устанавливает метод запроса POST, четко указан в Javadoc.   -  person user207421    schedule 29.02.2020