用極簡的代碼實(shí)現(xiàn) Http 請求:AstraHttp 幫助文檔

源碼傳送門

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ù)更新!有問題歡迎留言

感謝

OkHttp

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,711評論 19 139
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,361評論 25 708
  • Spring Boot 參考指南 介紹 轉(zhuǎn)載自:https://www.gitbook.com/book/qbgb...
    毛宇鵬閱讀 47,290評論 6 342
  • 第六章 話說光陰真的是如箭一般:快速、無情、從不回頭。不知不覺間,向往、陳文、吳偉、林孟強(qiáng)、梁俊彥五游子已在異鄉(xiāng)打...
    向往Justin閱讀 654評論 0 8
  • 【編者按】作者 Emil Soman,Rubyist,除此之外竟然同時也是藝術(shù)家,吉他手,Garden City ...
    OneAPM閱讀 336評論 0 1

友情鏈接更多精彩內(nèi)容