【移動應用開發(fā)技術(shù)】如何為Retrofit統(tǒng)一添加post請求的默認參數(shù)_第1頁
【移動應用開發(fā)技術(shù)】如何為Retrofit統(tǒng)一添加post請求的默認參數(shù)_第2頁
【移動應用開發(fā)技術(shù)】如何為Retrofit統(tǒng)一添加post請求的默認參數(shù)_第3頁
【移動應用開發(fā)技術(shù)】如何為Retrofit統(tǒng)一添加post請求的默認參數(shù)_第4頁
免費預覽已結(jié)束,剩余1頁可下載查看

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

【移動應用開發(fā)技術(shù)】如何為Retrofit統(tǒng)一添加post請求的默認參數(shù)

APP_FORM_URLENCODED("application/x-www-form-urlencoded"),

APP_JSON("application/json"),

APP_OCTET_STREAM("application/octet-stream"),

MULTIPART_FORM_DATA("multipart/form-data"),

TEXT_HTML("text/html"),

TEXT_PLAIN("text/plain"),傳統(tǒng)方式:public

interface

Apis

{

@POST("user/login")

Observable<Entity<User>>

login(@Body

RequestBody

body);//構(gòu)造一個RequestBody對象

@POST("user/login")

Observable<Entity<User>>

login(@Body

LoginInfo

loginInfo);//構(gòu)造一個實體對象

}Retrofit

mRetrofit

=

new

Retrofit.Builder()

.baseUrl(HttpConfig.BASE_URL)

.addConverterFactory(GsonConverterFactory.create())//添加gson轉(zhuǎn)換器

.addCallAdapterFactory(RxJava2CallAdapterFactory.create())//添加rxjava轉(zhuǎn)換器

.client(new

OkHttpClient.Builder().build())

.build();

Apis

mAPIFunction

=

mRetrofit.create(Apis.class);

Map<String,

Object>

params

=

new

LinkedHashMap<>();

params.put("name",

"吳彥祖");

params.put("request",

"123456");

RequestBody

requestBody

=

RequestBody.create(MediaType.parse("application/json;

charset=utf-8"),

JsonHelper.toJSONString(params));

mAPIFunction.login(RequestBody.create(requestBody))/upload/information/20200623/125/123793.png/upload/information/20200623/125/123794.pngpublic

static

RequestBody

getRequestBody(HashMap<String,

Object>

hashMap)

{

Map<String,

Object>

params

=

new

LinkedHashMap<>();

params.put("auth",

getBaseParams());

params.put("request",

hashMap);

return

RequestBody.create(MediaType.parse("application/json;

charset=utf-8"),

JsonHelper.toJSONString(params));

}攔截器方式:@Override

public

Response

intercept(Chain

chain)

throws

IOException

{

Request

request

=

chain.request();

if

(request.method().equals("POST"))

{

if

(request.body()

instanceof

FormBody)

{

FormBody.Builder

bodyBuilder

=

new

FormBody.Builder();

FormBody

formBody

=

(FormBody)

request.body();

//把原來的參數(shù)添加到新的構(gòu)造器,(因為沒找到直接添加,所以就new新的)

for

(int

i

=

0;

i

<

formBody.size();

i++)

{

bodyBuilder.addEncoded(formBody.encodedName(i),

formBody.encodedValue(i));

}

formBody

=

bodyBuilder

.addEncoded("clienttype",

"1")

.addEncoded("imei",

"imei")

.addEncoded("version",

"VersionName")

.addEncoded("timestamp",

String.valueOf(System.currentTimeMillis()))

.build();

request

=

request.newBuilder().post(formBody).build();

}

return

ceed(request);

}public

class

PostJsonBody

extends

RequestBody

{

private

static

final

MediaType

JSON

=

MediaType.parse("application/json;

charset=utf-8");

private

static

final

Charset

charset

=

Util.UTF_8;

private

String

content;

public

PostJsonBody(@NonNull

String

content)

{

this.content

=

content;

}

public

String

getContent()

{

return

content;

}

@Nullable

@Override

public

MediaType

contentType()

{

return

JSON;

}

@Override

public

void

writeTo(@NonNull

BufferedSink

sink)

throws

IOException

{

byte[]

bytes

=

content.getBytes(charset);

if

(bytes

==

null)

throw

new

NullPointerException("content

==

null");

Util.checkOffsetAndCount(bytes.length,

0,

bytes.length);

sink.write(bytes,

0,

bytes.length);

}

public

static

RequestBody

create(@NonNull

String

content)

{

return

new

PostJsonBody(content);

}

}@Override

public

Response

intercept(@NonNull

Chain

chain)

throws

IOException

{

Request

originalRequest

=

chain.request();

Request.Builder

builder

=

originalRequest.newBuilder();

if

(originalRequest.method().equals("POST"))

{

RequestBody

requestBody

=

originalRequest.body();

if

(requestBody

instanceof

PostJsonBody)

{

String

content

=

((PostJsonBody)

requestBody).getContent();

HashMap<String,

Object>

hashMap

=

JsonHelper.fromJson(content,

HashMap.class);

builder.post(RequestBodyFactory.getRequestBody(hashMap));

}

}

return

ceed(builder.build());

}RequestBody

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論