Ton*_*man 4 kotlin okhttp okhttp3
我有一段代码:
override fun onResponse(call: Call<ResponseBody>, response: Response<ResponseBody>) {
try {
Log.d("DEBUG POST=====>", response.body()!!.string())
}catch(e:IOException) {
e.printStackTrace()
}
}
Run Code Online (Sandbox Code Playgroud)
当我使用时,response.body()!!.string()我得到了正确的输出和JSON体.
当我使用:response.body().toString()我得到okhttp3.ResponseBody$1@c626d25
任何人都可以告诉我这两种方法有什么区别.
Zoe*_*Zoe 10
string()不是有效的Kotlin(或Java)方法,因为两种语言都没有定义它.它由OkHttp定义ResponseBody,它是获取类的实际字符串值的正确方法.它没有覆盖toString,这意味着调用toString()go以Object你得到的形式返回对象.确切地说,它返回对象的十六进制表示.
TL:DR; Java或Kotlin没有定义一个string()方法,OkHttp库在ResponseBody类中.toString未被覆盖,使其返回类的十六进制表示而不是正文的字符串值.使用string()与否toString()
| 归档时间: |
|
| 查看次数: |
525 次 |
| 最近记录: |