2013-11-29 1 views
0

HttpUrlConnection 래퍼를 작성했습니다. 파일 업로드를 지원하므로 HttpUrlConnection.setChunkedStreamingMode()를 사용하여 OutOfMemoryException을 방지합니다.HttpURLConnection.setChunkedStreamingMode()로 IOException 가져 오기

그러나 모든 데이터를 OutputStream에 쓰고 난 후에 IOException이 발생합니다. 이 방법이 없으면 모든 것이 잘 작동합니다. 여기

코드 : 기본 1024 바이트로

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 영역. 뭐가 문제 야?

+0

던져진 예외에 대한 세부 정보를 제공해 주시겠습니까? –

+0

@JohnSaxton 놀랍게도 URL은 FileNotFoundException입니다. 'java.io.FileNotFoundException : http : // connectionUrl at libcore.net.http.HttpURLConnectionImpl.getInputStream (HttpURLConnectionImpl.java:177)' – bvitaliyg

+0

쓰고있는 HTTP 끝점이 청크 분할 전송을 지원합니까? 청크 분할 인코딩을 사용하여 cURL을 사용하여이 파일에 쓸 수 있습니까? –

답변

-2

그것은 URL이 잘못된 것을 의미 FileNotFoundException

입니다. HTTP 403에 해당합니다.

청크 분할 전송 모드와 관련이 없습니다.

+0

@downvoters이 정답에 대한 혐오감을 설명하십시오. – EJP

관련 문제