美文网首页
Retrofit传递json类型的参数

Retrofit传递json类型的参数

作者: 九风特 | 来源:发表于2022-10-24 16:27 被阅读0次

今天做一个安卓的需求,需要用到retrofit访问restApi服务器。这可能是最常见的需求了,第一个接口是个登录接口,是一个post类型的api接口,服务器要求参数是一个json格式,如下所示:

{
    "username":"admin",
    "password":"admin123", 
    "code":"0"
}

返回类似这样:

{
    "code": 200,
    "data": {},
    "message": "操作成功",
    "token": "eyJhbGciOiJIUzUxMiJ9.eyJsb2dpbl91c2VyX2tleSI6IjI5NzdiMDcxLTI0MDYtNDI1Yi04YzA0LWZhYjI2N2QyMDc4ZCJ9.7CoTnvalu0-Lw9eVFECRW5yDYh18T7V1-kfMOxlsMJtAeO4ME4okLSGrnC05ZUQtR4CtabOTrmjuW4tYWJpq4Q"
}

api接口用postman实验了,没任何问题。 但怎么样用retrofit去实现它呢?
那既然咱们是客串就只好先搜了,retrofit的基本使用解决了,但最后的问题是如何传递那个小json参数到服务器,网上倒是也有很多代码什么的,但始终感觉不满意,或者说不够方便,最终自己弄了一个解决方案,其实原理和网上说的没啥区别,主要是为了方便,受到kotlin mapof() 的启发 写了一个jsonOf而已:

fun <K, V> jsonOf(vararg pairs: Pair<K, V>):RequestBody =
    if (pairs.isNotEmpty()){
        Gson().toJson(mapOf(*pairs))
            .toRequestBody("application/json; charset=utf-8".toMediaType())
    }
    else throw Throwable("bad json arguments")

然后看看api接口定义

    @POST("login")
    suspend fun login(@Body body:RequestBody):LoginRepo

LoginRepo无非是返回值结构的定义就不贴了,在看看调用时是不是简洁就行了
调用login

iotService.login(jsonOf("username" to "admin", "password" to "admin123", "code" to 0))

有了jsonOf是不是很简单了,以后有任何需要json参数的这样搞就行了(复杂的也没问题)
也备用自己以后再次复制粘贴,所以写了小东西

相关文章

  • Retrofit传递json类型的参数

    今天做一个安卓的需求,需要用到retrofit访问restApi服务器。这可能是最常见的需求了,第一个接口是个登录...

  • Android-Retrofit示例

    0. Thanks Android Retrofit2 Post请求添加Json类型参数笔记 Retrofit2....

  • JSOIN.parse()报错:Uncaught SyntaxE

    JSON.parse(str),参数str应该是string类型 如果传递的参数是object 类型 那么JSO...

  • 客户端到服务器字符乱码问题

    //处理乱码问题 String json=“客户端传递过来的json类型的String参数”;//例如:如下图所示...

  • 3.0查看任务

    描述: 输入参数: 参数类型: application/json 例子: 返回参数: 参数类型: applicat...

  • PHP接口开发规范

    参数传递方式: 所有参数key、value键值对,转json然后base64(urlencode(json))转码...

  • java 参数传递

    java中方法参数传递方式是按值传递。 如果参数是基本类型,传递的是基本类型的字面量值的拷贝。 如果参数是引用类型...

  • JavaScript函数的参数传递

    JavaScript函数的参数传递取决于参数的类型: 若参数为基本类型,那么按值传递 若参数为引用类型,那么按共享...

  • Java 参数传递问题

    Java参数传递 给出了基本类型和引用类型参数传递时行为的示例,并给出了String类型作为参数传递时表现出的和一...

  • Retrofit 传递数组参数

    面对数组参数我们通常封装的请求参数都是用map来放,当遇到数组参数怎么办?map也可以处理

网友评论

      本文标题:Retrofit传递json类型的参数

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