Я давно застрял в этой проблеме. У меня есть googled относительно этого, а также видел все ссылки, связанные с «chunked» в SO. Итак, наконец, решил опубликовать этот вопрос. Позвольте мне рассказать о проблеме. У меня есть Java-код, который читает ответ от HTTPS, используя сокет. Ответ получен правильно, и все идет хорошо, если кодирование передачи не «обрывается». Я пытаюсь прочитать chunked ответ сокета как массив байтов, и когда я преобразовываю его в строку, ответ нечитабелен. Я подозреваю, что я делаю что-то неправильно в обработке данных куска. Из-за этой проблемы я также получаю исключение «Не в формате GZip», когда я пытаюсь выполнить распаковку ответа. Код, который я использую для обработки ломти являетсяПолучение ответа на вызов HTTPS не работает
int chunkLength;
do {
String lengthLine = inStream.readLine();
if (lengthLine == null) {
return false;
}
chunkLength = Integer.parseInt(lengthLine.trim(), 16);
if (chunkLength > 0) {
byte[] chunk = new byte[chunkLength];
int bytesRead = inStream.read(chunk);
if (bytesRead < chunkLength) {
return false;
}
//Burn a CR/LF
inStream.readLine();
}//if chunkLength
} while (chunkLength > 0) ;
return true;
Как я новичок задавать вопрос в SO я могу отсутствовать некоторые (вероятно, много) детали, которые могут быть необходимы для вас для подачи раствора. Пожалуйста, простите меня в таком случае и сообщите мне, если вам понадобится дополнительная информация об этом. Любая помощь будет принята с благодарностью. Приветствия.
Почему? Почему бы не использовать 'HttpURLConnection', который делает все это для вас? – EJP
Спасибо за ваш быстрый ответ. Это ограничение в продукте, которое мы должны использовать сокеты. Фактически мы устанавливаем прокси в браузере для записи HTTP-трафика, и мы читаем записанный трафик с помощью сокета. –
'HttpURLConnection' использует сокеты. Если кто-то устанавливает ограничение, определяющее, какие классы вы используете, их не должно быть. – EJP