public
inte***ce
baseapiservice
使用泛型定義請求介面get、post、、、,好處是不管api有多少我們都可以走乙個通道,不用重新寫方法,處理思路是gosn解析:
在service中定義預設返回http3的response,在apimanager中定義乙個轉換observable方法,把response.string返回內容使用gson進行包裝。根據傳來的引數型別,使用rx操作符flatmap進行轉換我們對應的s實體型別。
public
class
baseapimanager
public
static
synchronized baseapimanager getapi()
return instance;
}/**
* 執行網路請求
*@param url 已經指定了base url 可以傳目錄
*@param querymap 請求引數
*@param tclass 返回物件的泛型
*@param
泛型 *@return 具體observable 物件
*/public
observableexecuteget(string url, final classtclass, hashmapquerymap) catch (ioexception e)
return createobserver(t);
}});
return ob.subscribeon(schedulers.io()).observeon(androidschedulers.mainthread());
}/**
* 執行網路請求
*@param url 已經指定了base url 可以傳目錄
*@param tclass 返回物件的泛型
*@param
泛型 *@return 具體observable 物件
*/public
observableexecuteget(string url, final classtclass) catch (ioexception e)
return createobserver(t);
}});
return ob.subscribeon(schedulers.io()).observeon(androidschedulers.mainthread());
}/**
* 執行網路請求
*@param url 已經指定了base url 可以傳目錄
*@param querymap 請求引數
*@param tclass 返回物件的泛型
*@param
泛型 *@return 具體observable 物件
*/public
observableexecutepost(string url, final classtclass, hashmapquerymap) catch (ioexception e)
return createobserver(t);
}});
return ob.subscribeon(schedulers.io()).observeon(androidschedulers.mainthread());
}/**
* 建立乙個泛型的observable
*@param t 泛型
*@param
observable 返回指定的泛型
*@return
*/private
observablecreateobserver(final t t) else
subscriber.oncompleted();
}});
}}
使得我們需要請求返回的物件都繼承該類,以便網路請求有的地方統一處理
public
class
baseresponse
public
void
setmessage(string message)
public
intgetresult()
public
void
setresult(int result)
public
intgetcode()
public
void
setcode(int code)
public
boolean
isok()
}
/**
* created by administrator on 2017/1/9 0009.
*/public
class
basesubscriber
extends
baseresponse> extends
subscriber }
private toast toast;
private
void showtoast(string msg,boolean notifynetwork)
if (toast== null) else
toast.show();
log.i(tag, msg);
}@override
public
void onstart()
if (dialog != null)
}@override
public
void oncompleted()
}@override
public
void onerror(throwable e) catch (ioexception e1) }}
@override
public
void onnext(t t)else
}public
inte***ce
callback
}
hashmapmap = new hashmap<>();
map.put("phone",shareutils.getuserphone());
map.put("password", shareutils.getpassword());
map.put("logindevice", "android");
baseapimanager.getapi().executepost("login",userbean.class,map)
.subscribe(new basesubscriber(null,new basesubscriber.callback
() @override
public void failure(string failure, int code, int result)
}));
perl 多檔案一次更新
1 寫 將 argv的所有檔案的內容中xyz全部更新為uiui,並且在更新前進行備份,比如說deep txt多個檔案備份為deep txt.bak i完成備份副檔名的設定。use strcit i bak while s xyz uiui g print 2 直接使用命令列執行以上功能 perl p...
feof多讀一次問題分析
在讀完檔案的最後乙個字元後,fp flag仍然沒有被置為 ioeof,因而feof 仍然沒有探測到檔案結尾。直到再次呼叫fgetc 執行讀操作,feof 才能探測到檔案結尾。這樣就多執行了一次。對於feof 這個函式,它是先讀再判斷是否到檔案尾,也就是說在它之前一定要讀一次才能做出判斷。而我們經常這...
如何一次轉換多篇文件?
有時我們需要一次轉換多篇文件,比如將html檔案轉為word檔案,或是將word檔案轉為txt格式的檔案等,可以用下面的方法,圖中的例子是將很多wps 2000編輯的檔案一次轉換為word 2000格式的檔案。將要轉換的檔案放在同乙個資料夾中,然後單擊 檔案 選單中的 新建 命令,單擊 其他文件 選...