最近進(jìn)入了安卓的坑來(lái)吐槽一下堤舒,一直作為iOS開發(fā)攻城獅色建,稍微有點(diǎn)不樂(lè)意看安卓的代碼,很麻煩界面還丑舌缤,沒(méi)有歧視箕戳,隨便吐槽一下。但前段時(shí)間公司項(xiàng)目比較緊所以多多少少跟來(lái)跟android來(lái)了第二親密接觸国撵,搞得我頭大不過(guò)也增加一些知識(shí)儲(chǔ)備陵吸,現(xiàn)在android還是半吊子,我還是忠實(shí)的蘋果粉介牙,哈哈~~
整體來(lái)記錄下有啥收獲最主要就是網(wǎng)絡(luò)框架 JSON解析壮虫。被這個(gè)網(wǎng)絡(luò)框架煩了一整天,現(xiàn)在基本上安卓開發(fā)個(gè)人感覺(jué)都是okhttp的环础,所以也到處找找框架啥的囚似,發(fā)現(xiàn)個(gè)比較好的剩拢,附上鏈接
=========》android post get 請(qǐng)求《=================
里面挺詳細(xì)的可是我復(fù)制粘貼還是遇見(jiàn)坑啦不得不吐槽一下,安卓這個(gè)類我有點(diǎn)傻傻分不清楚
就這個(gè)Handler 我都試了下三種吧饶唤,可能智商捉急徐伐,類太多,沒(méi)怎么摸過(guò)安卓
最重要還是這個(gè)網(wǎng)絡(luò)請(qǐng)求募狂,公司開發(fā)過(guò)程中基本上都用post我也不分了貼代碼
private okhttp3.Call requestPostByAsyn(String actionUrl, HashMap paramsMap,finalReqCallBack callBack) {
//? ? ? ? if (!isNetworkAvailable()) {
//? ? ? ? ? ? Toast.makeText(AppContext.getInstance(), R.string.no_network_connection_toast, Toast.LENGTH_SHORT).show();
//? ? ? ? }
try{
StringBuilder tempParams =newStringBuilder();
intpos =0;
for(String key : paramsMap.keySet()) {
if(pos >0) {
tempParams.append("&");
}
tempParams.append(String.format("%s=%s", key, URLEncoder.encode(paramsMap.get(key),"utf-8")));
pos++;
}
String params = tempParams.toString();
RequestBody body = RequestBody.create(MEDIA_TYPE_JSON, params);
String requestUrl = actionUrl;
finalRequest request = addHeaders().url(requestUrl).post(body).build();
finalokhttp3.Call call =mOkHttpClient.newCall(request);
call.enqueue(newCallback() {
@Override
public voidonFailure(okhttp3.Call call, IOException e) {
failedCallBack("訪問(wèn)失敗",callBack);
Log.e(TAG, e.toString());
}
@Override
public voidonResponse(okhttp3.Call call, Response response)throwsIOException {
if(response.isSuccessful()) {
String string = response.body().string();
Log.e(TAG,"response ----->"+ string);
TypeInfo typeInfo = ReqClassUtils.getCallbackGenericType(callBack.getClass());
callBack.onReqSuccess(ReqJsonUtils.parseHttpResult(typeInfo, jsonData));
successCallBack((T) string,callBack);
}else{
failedCallBack("服務(wù)器錯(cuò)誤",callBack);
}
}
});
returncall;
}catch(Exception e) {
Log.e(TAG, e.toString());
}
return null;
}
這個(gè)就是安卓的post異步請(qǐng)求哈哈呵晨,粗糙。
再來(lái)就是json解析
=======》json解析《========
主要是通過(guò)安卓的反射機(jī)制根據(jù)TypeInfo的相關(guān)屬性來(lái)進(jìn)行不同類型的json解析的
TypeInfo typeInfo =ReqClassUtils.getCallbackGenericType(callBack.getClass());
callBack.onReqSuccess(ReqJsonUtils.parseHttpResult(typeInfo, jsonData));
我都是抄來(lái)的??記錄一下安卓的網(wǎng)絡(luò)請(qǐng)求以及json解析熬尺,總體來(lái)說(shuō)熟悉后還是比較方便的,慢慢進(jìn)入安卓大軍中谓罗,做一名安卓開發(fā)中最好的iOS開發(fā)攻城獅粱哼,嘖嘖嘖