耳朵(三)接口交互

作者: a_mean | 来源:发表于2016-09-15 11:46 被阅读91次

    tags: 耳朵_android


    几乎所有的目前市面上的APP, 要是说没有一个与服务器交互的功能几乎是不可能的, android这边呢目前比较流行的网络请求框架有Volley、AndroidAsync、OkHttp等,当前我们使用的HMLibrary中就有一个在OkHttp的基础上使用Kotlin进一步扩展封装了的HMRequest, 接下来将用它来进行一次网络请求的演示.

    测试API地址: http://ear.life/?json=get_post&id=174

    使用任意一款API调试工具, 或者直接网络访问也行, 可以看到接口返回结构是这样的:


    判断正常返回的结构为 "status": "ok",, 同时我们还要再看看出错时是怎样提示的

    得到请求失败时的错误提示, "status": "error", "error": "XXXXX"
    现在我们可以来开始做Model解析了,新建http包,并添加HttpServerPath类:

    object HttpServerPath {
        val MAIN = "http://ear.life"
    }
    

    我们使用object来修饰, 这样里面的属性就可以直接HttpServerPath.MAIN来调用了, 类似java中的static.

    根据接口返回的结构我们可以搭建用于本项目http交互的Base类了:

    open class BaseModel(var status: String) : HMModel() {
        //数据是否正确
        override var valid: Boolean = false
            get() = "ok".equals(status)
        //相应提示
        override var message: String = ""
            get() = error
    }
    

    接着找个地方写我们的测试Model, 这里只为演示, 我们可以选择性的写几个用得到的字段, 并不用全部解析:

    class PostModel(var post: Post) : BaseModel() {
    
        var next_url: String? = null
        var previous_url: String? = null
    
        class Post(var id: Int, var title: String)
    }
    

    status字段在BaseModel中已经定义了, 这里可以省略, 其它的字段可以直接定义在PostModel()括号中, 也可以定义在下面{}里, post是一个内部类, 这些跟java的没什么两样, 了解些kotlin基础就可以一目了然了,这里不多说.

    接着我们可以开始调用一下接口试试:

        val params = HashMap<String, Any>()
        params.put("json", "get_post")
        params.put("id", 174)
        HMRequest.go<PostModel>(HttpServerPath.MAIN, params) {
            showToast(it?.post?.title)
        }
    

    OK没有意外, "下雨时你会想起谁" 已经toast出来了, 就是这么简单, 如果你想缓存这次请求到本地, 下次不再请求服务器的话, 仅仅需要添加cache = true :

        HMRequest.go<PostModel>(HttpServerPath.MAIN, params, cache = true) {
            showToast(it?.post?.title)
        }
    

    HMRequest中还有很多可以设置的属性, 感兴趣的同学可以前去github查看更详细的文档.

    github: https://github.com/bxcx/ear
    本节分支: https://github.com/bxcx/ear/tree/request

    相关文章

      网友评论

        本文标题:耳朵(三)接口交互

        本文链接:https://www.haomeiwen.com/subject/dpdbettx.html