Я написал HttpUrlConnection wrapper. Он поддерживает загрузку файлов, поэтому я использую HttpUrlConnection.setChunkedStreamingMode() для предотвращения исключения OutOfMemoryException.Получение IOException с HttpURLConnection.setChunkedStreamingMode()
Но после записи всех данных в OutputStream я получаю IOException. Без этого метода все работает нормально.
Вот код:
HttpURLConnection connection = getConnection();
if(!isSent) {
OutputStream output;
if(!files.isEmpty()) {
connection.setRequestProperty(HEADER_CONTENT_TYPE, CONTENT_TYPE_MULTIPART);
// Tried to add this line, but still not working
connection.setRequestProperty("Transfer-Encoding","chunked");
connection.setChunkedStreamingMode(chunkSize);
output = new BufferedOutputStream(connection.getOutputStream());
writeParamsMultipart(output);
writeFilesMultipart(output);
output.write((PREFIX + BOUNDARY + PREFIX + LINEND).getBytes());
} else {
connection.setRequestProperty(HEADER_CONTENT_TYPE, CONTENT_TYPE_FORM);
output = new BufferedOutputStream(connection.getOutputStream());
output.write(paramsToUrlencoded(post).getBytes());
}
output.flush();
output.close();
isSent = true;
}
// Getting exception on this line
InputStream input = new BufferedInputStream(connection.getInputStream());
if(ENCODING_GZIP.equalsIgnoreCase(connection.getHeaderField(HEADER_CONTENT_ENCODING))) {
input = new GZIPInputStream(input);
}
return input;
chunkSize по умолчанию 1024 байт. В чем проблема?
Не могли бы вы предоставить подробную информацию об исключении, которое бросается? –
@JohnSaxton удивительно, что это FileNotFoundException, но для URL. 'java.io.FileNotFoundException: HTTP: // ConnectionURL в libcore.net.http.HttpURLConnectionImpl.getInputStream (HttpURLConnectionImpl.java:177)' – bvitaliyg
Вы уверен, что HTTP конечной точки вы пишете носитель фрагментированных переводы? Можете ли вы написать ему, используя cURL с закодированным кодированием? –