Как заставить запрос HttpURLConnection ждать полного ответа? - PullRequest
0 голосов
/ 20 апреля 2020

Я пытаюсь получить ответ JSON, используя этот код. он хорошо работает для коротких ответов (от 20 до 30 строк), но обрезается посередине более длинных.

final HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("GET");
if (connection.getResponseCode() != 200) { throw new Exception(); }
BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream()));
String inline; StringBuilder response = new StringBuilder();
while ((inline = in.readLine()) != null) {
    response.append(inline);
}
in.close();
Log.d(TAG, "getJson: {"+url.toString()+"}\n"+response.toString());
return response.toString();

Пример вывода logcat, показывающий отсечение json здесь .

Как я могу заставить его всегда загружать полный ответ?

Редактировать:

Из комментариев видно, что этот вопрос сгенерирован, а также дальнейшее тестирование, что нет ничего свойственный или отсутствующий в коде, который вызывает усечение сервера, но это проблема android конкретная c. Может ли кто-нибудь, A) определить, почему длинные ответы (используйте пример ссылки выше) усекаются специально на android (будь то код выше или в браузере android), и B) - (реальный вопрос) есть способ программно преодолеть проблему?

1 Ответ

0 голосов
/ 20 апреля 2020

URL urlObj = новый URL (URL); HttpURLConnection httpCon = (HttpURLConnection) urlObj.openConnection ();

int responseCode = httpCon.getResponseCode ();

if (responseCode! = HttpURLConnection.HTTP_OK) {System.out (out). System. Сервер вернул код ответа "+ responseCode +". Загрузка не удалась. "); System.exit (0); }

Попробуйте изменить этот фрагмент кода как ваше требование.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...