搗鼓一下網(wǎng)絡(luò)工具
初始化
其中TestService類(lèi)和MyProcessor
TestService類(lèi)中有三個(gè)抽象方法,分別返回域名腿短、端口和服務(wù)器名(項(xiàng)目名炒瘸,由于做得Javaweb后臺(tái)多膘滨,一般都是這樣昌妹,可根據(jù)需要修改)而MyProcessor類(lèi)是用來(lái)對(duì)參數(shù)進(jìn)行處理捶枢,如需要加密時(shí),需要添加統(tǒng)一參數(shù)時(shí)飞崖。
使用
完成一個(gè)接口只要寫(xiě)兩個(gè)類(lèi)烂叔,一個(gè)請(qǐng)求類(lèi)(姑且這么叫),一個(gè)是返回的數(shù)據(jù)實(shí)體類(lèi)固歪,其中請(qǐng)求類(lèi)如下
從上往下分別是蒜鸡,先繼承BaseRequestAction,然后需要實(shí)現(xiàn)兩個(gè)抽象方法getActionApi()和getResultType()昼牛,getActionApi()返回本次請(qǐng)求的接口术瓮,getResultType()返回一個(gè)確定的類(lèi)型康聂,但是寫(xiě)法是固定的贰健,也就是TypeToken<BaseResultEntity<T>(){}.getType();T即為我們最終需要的實(shí)體類(lèi),需要注意的是恬汁,T是data中的數(shù)據(jù)伶椿,也就是數(shù)據(jù)格式如下
{
"code":"1",
"msg":"成功",
"data":""
}中的data的實(shí)體類(lèi),這里只要是確定的臣淤,都可以解析出來(lái)抄谐,比如傳一個(gè)String也行塘娶,List<T>等等。如果接口不是以這種格式返回的偎痛,抱歉,叫后臺(tái)改吧独郎。
也就是說(shuō)踩麦,BaseResultEntity其實(shí)對(duì)應(yīng)了后臺(tái)返回?cái)?shù)據(jù)的格式枚赡,需要根據(jù)實(shí)際后臺(tái)返回的字段修改,如
這里就是對(duì)應(yīng)了后臺(tái)返回
{
"resultCode":"1",
"resultDes":"成功",
"resultData":""
}
再看回action類(lèi)谓谦,定義了幾個(gè)參數(shù)name贫橙、password、type表示這個(gè)接口需要的參數(shù)反粥,其中前兩個(gè)有一個(gè)注解@Encryption卢肃,當(dāng)添加這個(gè)注解的時(shí)候,顧名思義表示是需要加密才顿,到時(shí)候MyProcessor類(lèi)中的EncryptionProcess方法就會(huì)回調(diào)莫湘。自此已經(jīng)完成了一個(gè)接口所需要的東西,在需要的地方調(diào)用即可得到結(jié)果郑气,其中如果resultCode的值是"1"我假設(shè)后臺(tái)返回1時(shí)是正常的結(jié)果逊脯,就會(huì)回調(diào)下面的方法,如果不是1怎么辦竣贪,我還要處理那些不是1的結(jié)果啊军洼,比如提示用戶(hù),又或者改變界面等等
@Override
public voidonResult(LoginBean result) {
}
很簡(jiǎn)答演怎,實(shí)現(xiàn)下面這個(gè)方法
所以的其他情況都會(huì)回調(diào)到這個(gè)方法匕争,其中
我們根據(jù)exceptionType來(lái)做啥都行,包括數(shù)據(jù)解析失敗也會(huì)回調(diào)這個(gè)方法爷耀。還有一點(diǎn)是甘桑,當(dāng)doActionPost方法傳入Context時(shí)會(huì)自動(dòng)彈出加載框,傳null則不彈歹叮。
設(shè)計(jì)思想:力求最簡(jiǎn)跑杭。