序文
このブログは、ダウンロードの改造ではないので、多く、実際には、改造アップロードする使用して、ダウンロードを説明し、それはまだダウンロードおよびアップロードの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() 。baseUrlに(「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> レスポンス){ 試み{ ロング合計= 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を理解していれば、それは簡単でなければなりません。
アップロード
終わり