Androidの開発者は、ダウンロードおよびアップロードを改造します

序文

   このブログは、ダウンロードの改造ではないので、多く、実際には、改造アップロードする使用して、ダウンロードを説明し、それはまだダウンロードおよびアップロードの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を理解していれば、それは簡単でなければなりません。

 

アップロード

 

 

 

 

 

 

 

 

 

 

 

 

 

終わり

おすすめ

転載: www.cnblogs.com/guanxinjing/p/11609328.html