AstraHttp
一個優(yōu)雅的 http 網(wǎng)絡(luò)請求框架,用極簡的代碼實(shí)現(xiàn)復(fù)雜的網(wǎng)絡(luò)請求。
基于 OkHttp3 封裝
如何使用
先在 build.gradle 的 repositories 添加:
allprojects {
repositories {
...
maven { url "https://jitpack.io" }
}
}
然后在 dependencies 添加:
dependencies {
compile 'com.github.atove:AstraHttp:VERSION_CODE'
}
用這里的真實(shí)發(fā)行版本號, 替換 VERSION_CODE
編寫 MobileAPI 文件
在 assets 文件夾新建 url.xml 文件
然后在 url.xml 文件中添加
<?xml version="1.0" encoding="utf-8"?>
<url>
<!--登錄-->
<Node
Key="login"
Expires="0"
NetType="post"
Host="MainHost"
DecorateType="json"
Url="/api/user/login"
/>
<!--上傳圖片-->
<Node
Key="file"
Expires="0"
NetType="post"
Host="MainHost"
DecorateType="from"
Url="/api/resource/coverImage" />
</url>
在 Application 的 onCreate 方法中添加
//注冊MobileAPI 文件
RemoteService.getInstance().init(this, "url.xml");
//注冊Host,對應(yīng)url.xml 中Host
RemoteService.getInstance().addHost("MainHost", "http://xxx.xxx.xxx");
//注冊Request,對Request進(jìn)行統(tǒng)一處理,對應(yīng)url.xml 中DecorateType
RemoteService.getInstance().addrequestDecorate("from", new FromRequest());
RemoteService.getInstance().addrequestDecorate("json", new JsonRequest());
//是否打印Log
RemoteService.getInstance().isPrintLog(true);
自定義Request
繼承 RequestDecorate 可以實(shí)現(xiàn)對請求的統(tǒng)一處理。
例如 FromRequest :
public class FromRequest extends RequestDecorate {
public FromRequest() {
}
@Override
public String getMediaType() {
return "multipart/form-data";
}
@Override
public String getContent() {
return null;
}
@Override
public HashMap<String, String> getRequestHeader() {
String accesskey = "xxxxxxxxxx";
addRequestHeader("xxxxxxxxxx", accesskey);
return super.getRequestHeader();
}
}
發(fā)起請求
RemoteService.getInstance().invoke("login")
//添加 url 后綴,會拼接在 url 后邊,用 / 分隔,非必須,可添加多個
.addUrlSuffix("xxxxxx")
//添加參數(shù),可添加多個,value 可以是 String、int
.addParam("loginname", "xxx")
.addParam("password", "xxx")
//上傳文件,只能單個文件上傳
.setFile(new File("PATH"))
//請求回調(diào)
.setRequestCall(new RequestCallback() {
@Override
public void onSuccess(String content) {
Log.d("請求成功", content);
}
@Override
public void onFail(int code, String errorMessage) {
}
})
.start();
請求回調(diào)
繼承 RequestCallback 對返回的數(shù)據(jù)進(jìn)行統(tǒng)一處理
例如 JsonRequestCallBack :
public abstract class JsonRequestCallBack extends BaseRequestCallBack {
private JSONObject jsonObject;
Handler myHandler = new Handler() {
//2.重寫消息處理函數(shù)
public void handleMessage(Message msg) {
switch (msg.what) {
//判斷發(fā)送的消息
case ON_SUCCESS:
//更新View
success(jsonObject);
break;
}
super.handleMessage(msg);
}
};
@Override
public void onSuccess(JSONObject result) {
jsonObject = result;
Message message = new Message();
//發(fā)送消息與處理函數(shù)里一致
message.what = ON_SUCCESS;
//內(nèi)部類調(diào)用外部類的變量
myHandler.sendMessage(message);
}
public abstract void success(JSONObject result);
}
功能正在完善中,并持續(xù)更新!有問題歡迎留言