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 次 |
最近记录: |