머리말
이 블로그는 업로드 및 다운로드, 사실, 다운로드 그다지 개조하고 여전히 다운로드 및 업로드 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을 이해한다면, 그것은 쉽게해야하므로,이 패키지를 수행하지 않았다.
업로드
종료