【发布时间】:2021-03-27 21:24:22
【问题描述】:
我可以输出I/okhttp.OkHttpClient:
图片中显示的结构,但我无法以任何方式访问它。关于这个主题有很多主题,据说这是response.body().string(); 的解决方案,但是当我编写此代码时,我收到.string() 的语法错误。
class RegisterPage : AppCompatActivity() {
val logging = HttpLoggingInterceptor()
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_register_page)
button.setOnClickListener {
val retrofit=
Retrofit.Builder().addConverterFactory(GsonConverterFactory.create()).client(getHttpClient()).baseUrl(Constants.BASE_URL).build()
val jsonPlaceholderApi=retrofit.create(JsonPlaceholderApi::class.java)
val userPost = Register(
name.text.toString(),
user.text.toString(),
pass.text.toString()
)
val call=jsonPlaceholderApi.sendRegister(userPost)
call.enqueue(object : Callback<Void> {
override fun onResponse(call: Call<Void>, response: Response<Void>) {
if(response.isSuccessful){
println("asd")
}else{
println(response.body())
}
}
override fun onFailure(call: Call<Void>, t: Throwable) {
println(t.printStackTrace())
}
})
}
}
fun getHttpClient(): OkHttpClient {
// logging.setLevel(HttpLoggingInterceptor.Level.BODY)
logging.level = HttpLoggingInterceptor.Level.BODY
return OkHttpClient.Builder()
.connectTimeout(300, TimeUnit.SECONDS)
.readTimeout(300, TimeUnit.SECONDS).addInterceptor(logging).build()
}
}
【问题讨论】:
-
您似乎混淆了 Retrofit 和 OkHttp 回调接口。来自 OkHttp 响应的 Response.body() 上的 string() 方法,而不是 Retrofit。
标签: android retrofit retrofit2 okhttp