#android #retrofit #retrofit2 #okhttp
#Android #модернизация #retrofit2 #okhttp
Вопрос:
Я могу вывести 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()
}
}
Комментарии:
1. Похоже, вы путаете интерфейсы обратного вызова Retrofit и OkHttp. Метод string() включает Response.body() из ответа OkHttp, а не модифицируется.
Ответ №1:
Это Kotlin. Я думаю, вы должны сделать это так:
response.body()?.string()
Источник: https://medium.com/@rohan.s.jahagirdar/android-http-requests-in-kotlin-with-okhttp-5525f879b9e5
Комментарии:
1. я пытаюсь, но ничего не изменилось.
Ответ №2:
Ваш общий тип Response
— это Void
, вы должны изменить это на что-то вроде String
, потому что тип Void диктует, что у него нет ответа.