**跟着第一行代码学习pull解析时,不知道为什么出错了,
我代码如下: 更加logt提示erro 有点多,就不贴不来了,具体有几个就是说打开文件流有问题找不到文件,但是这也没错啊,而且那个安全性我也把androidmainfest里面写了文件,实在不知道为什么出错了,然后Apache创的网页应该没有问题,我可以用模拟器打开,
package com.example.webtest
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.util.Log
import kotlinx.android.synthetic.main.activity_main.*
import okhttp3.OkHttpClient
import okhttp3.Request
import org.xmlpull.v1.XmlPullParser
import org.xmlpull.v1.XmlPullParserFactory
import java.io.StringReader
import kotlin.Exception
import kotlin.concurrent.thread
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
send.setOnClickListener {
sendRequestWithhttpConnnect()
}
}
private fun sendRequestWithhttpConnnect(){
thread {
try {
val client=OkHttpClient()
val request=Request.Builder().url("http://10.0.2.2/get_data.xml").build()
val response=client.newCall(request).execute()
val responseData=response.body?.string()
if (responseData!=null)
ParseXMLwithpull(responseData)
}
catch (e:Exception){
e.printStackTrace()
}
}
}
private fun ParseXMLwithpull(xmldata:String){
try {
val factory=XmlPullParserFactory.newInstance()
val xmlPullParser=factory.newPullParser()
xmlPullParser.setInput(StringReader(xmldata))
var eventType=xmlPullParser.eventType
var id=""
var name=""
var version=""
while(eventType!=XmlPullParser.END_DOCUMENT){
val nodeName=xmlPullParser.name
when(eventType){
XmlPullParser.START_TAG->{
when(nodeName){
"id"-> id=xmlPullParser.nextText()
"name"-> name=xmlPullParser.nextText()
"version"-> version=xmlPullParser.nextText()
}
}
XmlPullParser.END_TAG->{
if(nodeName=="app"){
Log.d("mainActivity","the id is $id")
Log.d("mainActivity","the name is $name")
Log.d("mainActivity","the version is $version ")
}
}
}
eventType=xmlPullParser.next()
}
}catch (e:Exception){
e.printStackTrace()
}
}
}