Android (Java / Kotlin) - ошибка HTTP 400 - Плохой запрос и запрос имеют только заголовок без тела - PullRequest
0 голосов
/ 08 ноября 2018

все!

Я создаю и приложение, которое использует API от компании, где я работаю. Когда я выполняю запрос (GET) с подключением URL (через HttpURlConnection) с заголовком (кодирование, авторизация и т. Д.) И телом (в виде JSON, используя Content-Type = "application / json"), код ответа равен 200 и соединение работает довольно хорошо, но я использую тот же заголовок в другом запросе, НО БЕЗ содержимого, я получаю неверный запрос.

Я уже пытался установить doOutout = false, но он не работает.

Я думаю, что все в порядке с URL и заголовком, потому что я выполнил запрос Почтальона и получил ответ.

Вот способ, которым я создаю соединение и соединяюсь:

val uri = Uri.parse("Base URL").buildUpon().appendPath(path).build() val url = URL(uri.toString()) val connection = url.openConnection() as HttpURLConnection connection.apply {
            addRequestProperty("Charset", Charsets.UTF_8.displayName())
            addRequestProperty("Authorization", "Basic $token")
            addRequestProperty("X-Serial", 5036.toString())
            requestMethod = "GET"
            connectTimeout = 0
            readTimeout = 0
            doOutput = false
            if (responseCode != HTTP_OK) throws Exception("Erro") 
        }

Ответы [ 2 ]

0 голосов
/ 12 ноября 2018

Я выяснил, в чем проблема: Я! Значение $ token было сгенерировано с флагом DEFAULT. После того, как я это понял, я поставил флаг NO_WRAP, и мой запрос сработал.

Мой плохой! Но спасибо за поддержку!

0 голосов
/ 08 ноября 2018

Неверный запрос указывает на то, что проблема связана с тем, как сформирован ваш запрос.

Вероятно, проблема с одним из устанавливаемых вами заголовков запросов. Посмотрите на заголовки принятых запросов здесь .

Charset потенциально должен называться Accept-Charset, и я не видел примеров использования X-Serial.

Здесь - пример настройки запроса GET с использованием HttpUrlConnection. Вы можете попробовать удалить все заголовки, кроме Авторизации, и задать для метода запроса значение GET, как в этом примере.

...