Android RxJava Retrofit頭像單列圖片上傳

```

public class RetrofitUtil {

private static finalStringTAG="retrofit";

//TODO:修改主機(jī)地址

private static finalStringBASE_URL="服務(wù)器地址/";

private static final intDEFAULT_TIMEOUT=5;//請求時間

private staticRetrofitretrofit;

//實(shí)例化私有

privateWeiYunRetrofitUtil() {

}

public staticRetrofit getInstance() {

if(retrofit==null) {

ClearableCookieJar cookieJar =

newPersistentCookieJar(newSetCookieCache(),newSharedPrefsCookiePersistor(App.getInstance()));

OkHttpClient.Builder httpClientBuilder =newOkHttpClient.Builder();//okhttp創(chuàng)建主儡,寫入緩存機(jī)制蕴轨,還有addInterceptor

httpClientBuilder.connectTimeout(DEFAULT_TIMEOUT, TimeUnit.SECONDS);

File cacheFile =newFile(App.getInstance().getCacheDir(),"superman");

Cache cache =newCache(cacheFile,1024*1024*100);//100Mb

httpClientBuilder.cache(cache);

httpClientBuilder.cookieJar(cookieJar);

httpClientBuilder.addInterceptor(LoggingInterceptor);

httpClientBuilder.addInterceptor(REWRITE_CACHE_CONTROL_INTERCEPTOR);

httpClientBuilder.addNetworkInterceptor(REWRITE_CACHE_CONTROL_INTERCEPTOR);

return newRetrofit.Builder()//retrofit的創(chuàng)建圣勒。

.client(httpClientBuilder.build())

//傳入okhttp

.addConverterFactory(newNullOnEmptyConverterFactory())

.addConverterFactory(GsonConverterFactory.create())//傳入gson解析手段

.addCallAdapterFactory(RxJavaCallAdapterFactory.create())

//傳入異步手段

.baseUrl(BASE_URL)//傳入服務(wù)器地址

.build();

}else{

returnretrofit;

}

}

private static finalInterceptorLoggingInterceptor=newInterceptor() {

@Override

publicResponse intercept(Chain chain)throwsIOException {

Request request = chain.request();

longt1 = System.nanoTime();

Logger.t(TAG).i(String.format("Sending request %s on %s%n%s", request.url(), chain.connection(), request.headers()));

Response response = chain.proceed(request);

longt2 = System.nanoTime();

Logger.t(TAG).i(String.format("Received response for %s in %.1fms%n%s", response.request().url(), (t2 - t1) /1e6d, response.headers()));

returnresponse;

}

};

private static finalInterceptorREWRITE_CACHE_CONTROL_INTERCEPTOR=newInterceptor() {

@Override

publicResponse intercept(Chain chain)throwsIOException {

Request request = chain.request();

if(!NetUtil.isConnected(App.getInstance())) {

request = request.newBuilder()

.cacheControl(CacheControl.FORCE_CACHE)

.build();

Logger.t(TAG).w("no network");

}

Response originalResponse = chain.proceed(request);

if(NetUtil.isConnected(App.getInstance())) {

//有網(wǎng)的時候讀接口上的@Headers里的配置改览,你可以在這里進(jìn)行統(tǒng)一的設(shè)置

String cacheControl = request.cacheControl().toString();

returnoriginalResponse.newBuilder()

.header("Cache-Control", cacheControl)

.removeHeader("Pragma")

.build();

}else{

returnoriginalResponse.newBuilder()

.header("Cache-Control","public, only-if-cached, max-stale=2419200")

.removeHeader("Pragma")

.build();

}

}

};

接口實(shí)現(xiàn)

public interface Request {

// ? ?頭像上傳

@Multipart

@POST("app/head_portrait_img")

Observable uploadImage(@Part List partlist);

}

調(diào)用接口

MultipartBody.Builder builder =newMultipartBody.Builder()

.setType(MultipartBody.FORM)//表單類型

.addFormDataPart("user_id", uid)

.addFormDataPart("timespan", name)

.addFormDataPart("token", useNmae);//ParamKey.TOKEN 自定義參數(shù)key常量類,即參數(shù)名

RequestBody imageBody = RequestBody.create(MediaType.parse("multipart/form-data"), file);

builder.addFormDataPart("pic_upload", file.getName(), imageBody);//imgfile 后臺接收圖片流的參數(shù)名

builder.addFormDataPart("head_ico", file.getName(), imageBody);//imgfile 后臺接收圖片流的參數(shù)名

List parts = builder.build().parts();

weiYunRequest.uploadImage(parts).subscribeOn(Schedulers.io())

.unsubscribeOn(Schedulers.io())

.observeOn(AndroidSchedulers.mainThread())

.subscribe(newSubscriber() {

@Override

public voidonCompleted() {

}

@Override

public voidonError(Throwable e) {

ByAlert.alert("上傳失敗");

Log.d("Throwableisr", e.toString() +"");

unsubscribe();

Glide.with(PersonalActivity.this)

.load("")

.error(R.drawable.err_logo)

.bitmapTransform(newCropCircleTransformation(PersonalActivity.this))

.into(pereHead);

try{

closeProgressDialog();

}catch(Exception t) {

}

}

@Override

public voidonNext(finalErrorMessge bean) {

}

```

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末攀唯,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌噪窘,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,204評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件效扫,死亡現(xiàn)場離奇詭異倔监,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)菌仁,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,091評論 3 395
  • 文/潘曉璐 我一進(jìn)店門浩习,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人济丘,你說我怎么就攤上這事谱秽。” “怎么了摹迷?”我有些...
    開封第一講書人閱讀 164,548評論 0 354
  • 文/不壞的土叔 我叫張陵疟赊,是天一觀的道長。 經(jīng)常有香客問我峡碉,道長近哟,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,657評論 1 293
  • 正文 為了忘掉前任鲫寄,我火速辦了婚禮吉执,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘塔拳。我一直安慰自己鼠证,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,689評論 6 392
  • 文/花漫 我一把揭開白布靠抑。 她就那樣靜靜地躺著量九,像睡著了一般。 火紅的嫁衣襯著肌膚如雪颂碧。 梳的紋絲不亂的頭發(fā)上荠列,一...
    開封第一講書人閱讀 51,554評論 1 305
  • 那天,我揣著相機(jī)與錄音载城,去河邊找鬼肌似。 笑死,一個胖子當(dāng)著我的面吹牛诉瓦,可吹牛的內(nèi)容都是我干的川队。 我是一名探鬼主播力细,決...
    沈念sama閱讀 40,302評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼固额!你這毒婦竟也來了眠蚂?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,216評論 0 276
  • 序言:老撾萬榮一對情侶失蹤斗躏,失蹤者是張志新(化名)和其女友劉穎逝慧,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體啄糙,經(jīng)...
    沈念sama閱讀 45,661評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡笛臣,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,851評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了隧饼。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片沈堡。...
    茶點(diǎn)故事閱讀 39,977評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖桑李,靈堂內(nèi)的尸體忽然破棺而出踱蛀,到底是詐尸還是另有隱情,我是刑警寧澤贵白,帶...
    沈念sama閱讀 35,697評論 5 347
  • 正文 年R本政府宣布率拒,位于F島的核電站,受9級特大地震影響禁荒,放射性物質(zhì)發(fā)生泄漏猬膨。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,306評論 3 330
  • 文/蒙蒙 一呛伴、第九天 我趴在偏房一處隱蔽的房頂上張望勃痴。 院中可真熱鬧,春花似錦热康、人聲如沸沛申。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,898評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽铁材。三九已至,卻和暖如春奕锌,著一層夾襖步出監(jiān)牢的瞬間著觉,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,019評論 1 270
  • 我被黑心中介騙來泰國打工惊暴, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留饼丘,地道東北人。 一個月前我還...
    沈念sama閱讀 48,138評論 3 370
  • 正文 我出身青樓辽话,卻偏偏與公主長得像肄鸽,于是被迫代替她去往敵國和親卫病。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,927評論 2 355

推薦閱讀更多精彩內(nèi)容