android - 为什么我无法访问 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()
}
}
解决方案
这是科特林。我认为你必须这样做:
response.body()?.string()
来源:https ://medium.com/@rohan.s.jahagirdar/android-http-requests-in-kotlin-with-okhttp-5525f879b9e5
推荐阅读
- c# - ASP.NET Core Worker 服务中的依赖注入
- java - Android Studio choreographer.java
- php - if 语句存在问题并与特定类别匹配
- c# - 为什么我不能将类型 'T' 转换为 int where T : System.Enum?
- mysql - 是更新 MySQL Atomic 中多行的单个查询吗?
- javascript - 如何根据 ReactJS 中的值过滤对象?
- security - 如何将 Auth Bearer 令牌传递给 Wapiti Web 应用程序漏洞扫描程序?
- reactjs - 试图在反应中嵌入另一个 Intranet 站点
- gitlab - Gitlab选项自动为问题创建分支/合并请求
- java - 如何使用 MyBatis BlobInputStreamTypeHandler / ClobReaderTypeHandler 流式传输选择请求的内容?