【移動應用開發(fā)技術】Android中Retrofit 2.0如何使用JSON進行數(shù)據(jù)交互_第1頁
【移動應用開發(fā)技術】Android中Retrofit 2.0如何使用JSON進行數(shù)據(jù)交互_第2頁
【移動應用開發(fā)技術】Android中Retrofit 2.0如何使用JSON進行數(shù)據(jù)交互_第3頁
【移動應用開發(fā)技術】Android中Retrofit 2.0如何使用JSON進行數(shù)據(jù)交互_第4頁
【移動應用開發(fā)技術】Android中Retrofit 2.0如何使用JSON進行數(shù)據(jù)交互_第5頁
已閱讀5頁,還剩5頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

【移動應用開發(fā)技術】Android中Retrofit2.0如何使用JSON進行數(shù)據(jù)交互

package

work.http;

import

java.util.Map;

import

okhttp3.RequestBody;

import

okhttp3.ResponseBody;

import

retrofit2.Call;

import

retrofit2.http.Body;

import

retrofit2.http.GET;

import

retrofit2.http.POST;

import

retrofit2.http.QueryMap;

import

retrofit2.http.Url;

/**

*

Created

by

wangyuhang@

on

2017/8/23

0023.

*/

public

interface

RetrofitServiceApi

{

@POST

Call<ResponseBody>

reqPost(@Url

String

url,

@Body

RequestBody

requestBody);

@GET

Call<ResponseBody>

reqGet(@Url

String

url,

@QueryMap

Map<String,

String>

options);

@GET

Call<ResponseBody>

reqGet(@Url

String

url);

}package

work.http;

import

android.util.Log;

import

java.io.IOException;

import

java.util.Map;

import

okhttp3.MediaType;

import

okhttp3.RequestBody;

import

okhttp3.ResponseBody;

import

retrofit2.Call;

import

retrofit2.Callback;

import

retrofit2.Response;

import

retrofit2.Retrofit;

import

retrofit2.converter.gson.GsonConverterFactory;

/**

*

Created

by

wangyuhang@

on

2017/7/12

0012.

*/

public

class

HttpClient

{

private

static

final

String

TAG

=

"HttpClient";

private

static

volatile

HttpClient

instance;

private

HttpClient()

{

}

public

static

HttpClient

getInstance()

{

if

(instance

==

null)

{

synchronized

(HttpClient.class)

{

if

(instance

==

null)

{

instance

=

new

HttpClient();

}

}

}

return

instance;

}

/**

*

Http

Post請求

*

*

@param

req_id

請求編號

*

@param

method

請求業(yè)務方法

*

@param

url

請求的URL

*

@param

jsonData

POST需要所帶參數(shù)(JSON串格式)

*

@param

callback

回調(diào)接口

*/

public

void

reqPostHttp(final

int

req_id,

final

String

method,

String

url,

String

jsonData,

final

HttpCallback

callback)

{

Retrofit

retrofit

=

new

Retrofit.Builder()

.baseUrl("/")

.addConverterFactory(GsonConverterFactory.create())

.build();

RetrofitServiceApi

retrofitServiceApi

=

retrofit.create(RetrofitServiceApi.class);

RequestBody

body

=

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

charset=utf-8"),

jsonData);

Call<ResponseBody>

call

=

retrofitServiceApi.reqPost(url,

body);

call.enqueue(new

Callback<ResponseBody>()

{

@Override

public

void

onResponse(Call<ResponseBody>

call,

Response<ResponseBody>

response)

{

try

{

String

result

=

response.body().string();

Log.i(TAG,

"reqPostHttp

onResponse:

"

+

result);

if

(callback

!=

null)

{

callback.onSuccess(new

HttpResMsg(req_id,

method,

result));

}

}

catch

(IOException

e)

{

e.printStackTrace();

Log.e(TAG,

"reqPostHttp

onResponse

exception:

"

+

e.toString());

if

(callback

!=

null)

{

callback.onError(e.toString());

}

}

}

@Override

public

void

onFailure(Call<ResponseBody>

call,

Throwable

t)

{

Log.e(TAG,

"reqPostHttp

onFailure:

"

+

t.toString());

if

(callback

!=

null)

{

callback.onError(t.toString());

}

}

});

}

/**

*

Http

Get請求

*

*

@param

req_id

請求編號

*

@param

method

請求業(yè)務方法

*

@param

url

請求的URL

*

@param

options

GET需要所帶參數(shù)鍵值(如果URL里帶有則不需要在此添加)

*

@param

callback

回調(diào)接口

*/

public

void

reqGetHttp(final

int

req_id,

final

String

method,

String

url,

Map<String,

String>

options,

final

HttpCallback

callback)

{

Retrofit

retrofit

=

new

Retrofit.Builder()

.baseUrl("/")

.addConverterFactory(GsonConverterFactory.create())

.build();

RetrofitServiceApi

retrofitServiceApi

=

retrofit.create(RetrofitServiceApi.class);

Call<ResponseBody>

call

=

null;

if

(options

==

null)

{

call

=

retrofitServiceApi.reqGet(url);

}

else

{

call

=

retrofitServiceApi.reqGet(url,

options);

}

call.enqueue(new

Callback<ResponseBody>()

{

@Override

public

void

onResponse(Call<ResponseBody>

call,

Response<ResponseBody>

response)

{

try

{

String

result

=

response.body().string();

Log.i(TAG,

"reqPostHttp

onResponse:

"

+

result);

if

(callback

!=

null)

{

callback.onSuccess(new

HttpResMsg(req_id,

method,

result));

}

}

catch

(IOException

e)

{

e.printStackTrace();

Log.e(TAG,

"reqPostHttp

onResponse

exception:

"

+

e.toString());

if

(callback

!=

null)

{

callback.onError(e.toString());

}

}

}

@Override

public

void

onFailure(Call<ResponseBody>

call,

Throwable

t)

{

Log.e(TAG,

"reqPostHttp

onFailure:

"

+

t.toString());

if

(callback

!=

null)

{

callback.onError(t.toString());

}

}

});

}

}baseUrl(/)Retrofit

retrofit

=

new

Retrofit.Builder()

.baseUrl("38:8081/course_api/wares/hot?pageSize=1&curPage=1")

.addConverterFactory(GsonConverterFactory.create())

.build();Retrofit

retrofit

=

new

Retrofit.Builder()

.baseUrl("38:8081/course_api/wares/hot?pageSize=1&curPage=1/")

.addConverterFactory(GsonConverterFactory.create())

.build();/upload/information/20200623/125/126713.png/upload/information/20200623/125/126714.pngpackage

work.http;

/**

*

Created

by

wangyuhang@

on

2017/8/23

0023.

*/

public

interface

HttpCallback

{

void

onSuccess(HttpResMsg

httpResMsg);

void

onError(String

errorMsg);

}package

work.http;

/**

*

Created

by

wangyuhang@

on

2017/8/23

0023.

*/

public

class

HttpResMsg

{

privat

溫馨提示

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

評論

0/150

提交評論