您的账号已失效 2021-10-05 19:25 采纳率: 33.3%
浏览 20
已结题

网络pull解析 出错 okhttp

**跟着第一行代码学习pull解析时,不知道为什么出错了,
我代码如下: 更加logt提示erro 有点多,就不贴不来了,具体有几个就是说打开文件流有问题找不到文件,但是这也没错啊,而且那个安全性我也把androidmainfest里面写了文件,实在不知道为什么出错了,然后Apache创的网页应该没有问题,我可以用模拟器打开,

img

img

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()
        }
    }
}
  • 写回答

2条回答 默认 最新

  • 您的账号已失效 2021-10-05 21:14
    关注

    我在试了试下面的sax解析也不行,不知道是不是我Apache创建网站的问题不,但是我能用模拟器打开啊?????

    评论

报告相同问题?

问题事件

  • 系统已结题 10月13日
  • 创建了问题 10月5日

悬赏问题

  • ¥50 树莓派安卓APK系统签名
  • ¥15 maple软件,用solve求反函数出现rootof,怎么办?
  • ¥65 汇编语言除法溢出问题
  • ¥15 Visual Studio问题
  • ¥20 求一个html代码,有偿
  • ¥100 关于使用MATLAB中copularnd函数的问题
  • ¥20 在虚拟机的pycharm上
  • ¥15 jupyterthemes 设置完毕后没有效果
  • ¥15 matlab图像高斯低通滤波
  • ¥15 针对曲面部件的制孔路径规划,大家有什么思路吗