2013-11-29 2 views
0

Я написал 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 байт. В чем проблема?

+0

Не могли бы вы предоставить подробную информацию об исключении, которое бросается? –

+0

@JohnSaxton удивительно, что это FileNotFoundException, но для URL. 'java.io.FileNotFoundException: HTTP: // ConnectionURL в libcore.net.http.HttpURLConnectionImpl.getInputStream (HttpURLConnectionImpl.java:177)' – bvitaliyg

+0

Вы уверен, что HTTP конечной точки вы пишете носитель фрагментированных переводы? Можете ли вы написать ему, используя cURL с закодированным кодированием? –

ответ

-2

Это FileNotFoundException

Это означает, что URL неверен. Это эквивалент HTTP 403.

Ничего общего с режимом передачи каналов.

+0

@ downvoters Пожалуйста, объясните свое отвращение к этому правильному ответу. – EJP