耳朵(三)接口交互

tags: 耳朵_android


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

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

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


耳朵(三)接口交互_第1张图片

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

耳朵(三)接口交互_第2张图片

得到请求失败时的错误提示, "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()
    params.put("json", "get_post")
    params.put("id", 174)
    HMRequest.go(HttpServerPath.MAIN, params) {
        showToast(it?.post?.title)
    }

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

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

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

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

你可能感兴趣的:(耳朵(三)接口交互)