안드로이드 개발자는 다운로드 및 업로드를 개조

머리말

   이 블로그는 업로드 및 다운로드, 사실, 다운로드 그다지 개조하고 여전히 다운로드 및 업로드 Okhttp 같이 업로드 개조 사용을 설명합니다.이 블로그는 자세히의 일부를 설명 할 수 없다 (이 블로그를 체크 아웃 개조 항목에 대해 알 필요가있는 경우 기본 일) : https://www.cnblogs.com/guanxinjing/p/11594249.html

다운로드

  설정 다운로드 인터페이스

공용  인터페이스 HttpList { 

    @Streaming // 주석 요청이 데이터 스트림 메모리에 인수 요청 데이터 후에 저장하고 조작을 지불하지 않습니다 인수했다. 
    @GET 
    전화 <위한 responseBody> 다운로드 (@url 문자열 URL); 


}

  다운로드 질문

개인  무효 downloadFile () {
         최종 파일 파일 = 새로운 새로운 파일 (getExternalCacheDir (), "demo.apk" );
         IF (File.Exists ()) { 
            File.delete를 (); 
        } 

        개조 개조 = 새로운 새로운 Retrofit.Builder () 
                . base을 ( "http://p.gdown.baidu.com/") // 기본 네트워크 주소 
                .callbackExecutor (Executors.newSingleThreadExecutor ()) // 스트림을 읽을 때 오류를 줄 것이다 다운로드를 설정하지 않으면, 스레드를 설정 
                .build (); 

        HttpList httpList = retrofit.create (. HttpList 클래스 ) 

        전화<위한 responseBody> 전화 = httpList.download (DOWNLOAD_URL_PATH); // 다운로드 너무 오래 그래서 조금, 오해하지 않는 DOWNLOAD_URL_PATH 패키지 사용 

        call.enqueue가 ( 새로운 새로운 콜백 <위한 responseBody> () { 
            @Override 
            공공  무효 onResponse가 (전화를 <위한 responseBody > 전화, 응답 <위한 responseBody> 응답) {
                 은 try {
                      총 = response.body () contentLength (); // 의 전체 크기 다운로드 할 필요가 
                     현재 = 0 ; 
                    해, InputStream inputStream을을 = . response.body () 바이트 스트림 (); 
                    FileOutputStream에 FileOutputStream에 = 새로운 새로운의 FileOutputStream (파일);
                    바이트 [] 바이트 = 새로운  바이트 [1024 ];
                    INT LEN = 0 ;
                    반면 ((LEN = inputStream.read (바이트)) = -1! ) { 
                        fileOutputStream.write (바이트); 
                        전류 = + 전류의 LEN; 
                        Log.e (TAG, "已经下载="+ 전류 + "需要下载="+ 전체); 
                    } 
                    fileOutputStream.flush (); 
                    fileOutputStream.close (); 
                    inputStream.close (); 

                }캐치 (FileNotFoundException이 전자) { 
                    e.printStackTrace (); 
                } 캐치 (IOException이 전자) { 
                    e.printStackTrace (); 
                } 
            } 

            @Override 
            공개  공극 onFailure (전화 <위한 responseBody> 통화의 Throwable t) { 

            } 
        }); 
    }

핵심은 사실 위의 다운로드, 달성하기 위한 responseBody을 ,이 실제로 응답 몸. okhttp 요청 인터페이스로의 회귀이다 개조 당신이 사용 okhttp을 이해한다면, 그것은 쉽게해야하므로,이 패키지를 수행하지 않았다.

 

업로드

 

 

 

 

 

 

 

 

 

 

 

 

 

종료

추천

출처www.cnblogs.com/guanxinjing/p/11609328.html