Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Android + Java HttpURLConnection + POST request

278
01 августа 2015 года
Alexander92
1.1K / / 04.08.2008
Всем доброго времени суток! Столкнулся с непонятной проблемой, если кто-то подскажет, куда копать, буду благодарен.

Я отправляю запрос на некий сервер авторизации. В ответ должен получить ~4Кб данных. В результате вместо этого получаю около 2Кб, после чего поток обрывается, и больше ничего я уже получить не могу. Собственно, код:

Код:
String data = "some string for the request";
URL url = new URL("http://...");
HttpURLConnection connection = (HttpURLConnection)url.openConnection();
connection.setConnectTimeout(20000);
connection.setReadTimeout(20000);
connection.setFixedLengthStreamingMode(data.length());
connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
connection.setRequestProperty("Accept-Encoding", identity");
connection.setDooOutput(true);

BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(connection.getOutputStream()));
writer.write(data);
writer.flush();
writer.close();

int status = connection.getResponseCode(); // здесь приходит 200
int contentLength = connection.getContentLength(); // сюда приходит ПРАВИЛЬНАЯ цифра!

BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream()));
String response = "
";
char buffer = new char[1024];
int bytesRead = reader.read(buffer, 0, 1024);
while (bytesRead != -1) {
    response += new String(buffer, 0, bytesRead);
    bytesRead = reader.read(buffer, 0, 1024);
}
reader.close();
Несколько замечаний.
  1. Абсолютно идентичный код на десктопе бегает на ура и загружает все, что положено.
  2. Отмечу справедливости ради, что ответ с сервера приходит не сразу, а где-то через секунду-полторы (на десктопе). Возможно, это тоже каким-то боком играет роль.
В общем, повторюсь еще раз, если кто-то просто натолкнет на мысль, с чем это может быть связано, скажу большое человеческое спасибо. :)
1.8K
01 августа 2015 года
Kuzya
184 / / 19.03.2008
 
Код:
connection.setRequestProperty("Accept-Encoding", identity");
Прям глаза режет нечетное количество ковычек
278
01 августа 2015 года
Alexander92
1.1K / / 04.08.2008
Это чисто ошибка переноса на форум. :) Сам же понимаешь, что оно бы так не скомпилировалось бы, если бы так и было в коде.
278
01 августа 2015 года
Alexander92
1.1K / / 04.08.2008
Ребят, вопрос закрыт. Никакой ошибки здесь нет, просто дальше по коду возвращаемая с сервера строка передавалась нативной C++ функции через JNI. Ошибка возникала именно на этом этапе.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог