在进行网络请求前需要做以下几件事:
1.导入依赖
implementation 'com.squareup.okhttp3:okhttp:4.8.1'
2.添加网络请求
需要在AndroidManifest.xml 中添加如下代码,不然无法进行网络请求
3.如果是发送http请求需要在res文件夹下创建一个network.xml,编写如下代码
然后在AndroidManifest.xml 中的application中添加
android:networkSecurityConfig="@xml/network"
如果是https请求则可以忽略第二步。
至此,才能过正确发送请求,接下来将以一段具体json文本做演示
上图就是需要进行解析的json文件
首先需要在activity中写发送请求的方法(记得要在onCreate中调用sendRequestWithOkHttp方法)
private fun sendRequestWithOkHttp() {
thread {
val client = OkHttpClient()
val request = Request.Builder()
.url("http:******")
.build()
val response = client.newCall(request).execute()
val responseData = response.body?.string()
if (responseData != null) {
parseJSONWithJSONObject(responseData)
}
}
}
然后再编写一个parseJSONWithJSONObject方法用于解析接受到的json文件
private fun parseJSONWithJSONObject(jsonData:String) {
try {
val jsonObject = JSONObject(jsonData)
val data = jsonObject.optString("data")
val jsonContent = JSONObject(data)
val id = jsonContent.optString("id")
val creatTime = jsonContent.optString("createTime")
val content = jsonContent.optString("content")
val cover = jsonContent.optString("cover")
Log.d("id",id)
Log.d("createtime",createTime)
} catch (e: Exception) {
e.printStackTrace()
}
}
需要注意的是上述示例json中的内容是一个嵌套类型,具体内容都是放在data中的,所以要先拿到第一层data中的内容,再对data进行解析。
到这一步就能在控制台看到解析到的具体内容了。



