第一行代码第九章解析XML格式的数据,书中要求我们自己搭建一个服务器,我搭建好了
也按照示例新建了一个get_data.xml的文件,里面输进去了书上的内容。我自己在我的电脑上也可以打开这个链接。后来因为一直出现异常(只有了Exception捕捉),自己去模拟器中也打开了那个连接,也是可以打开的,但是就是自己在代码中实现不行。自己一步步debug,到exeute时候就报异常,感觉自己格式也没问题啊。下面贴上我的图。
application中加上android:usesCleartextTraffic="true"
我也遇到过,
InputStream in = new ByteArrayInputStream(response.body().bytes());
xmlPullParser.setInput(in,"utf-8");
这个改一下
private void parseXMLWithPull(String xmlData){
try {
XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
XmlPullParser xmlPullParser = factory.newPullParser();
InputStream in = new ByteArrayInputStream(response.body().bytes());
xmlPullParser.setInput(in,"utf-8");
// xmlPullParser.setInput(new StringReader(xmlData));
int eventType = xmlPullParser.getEventType();
String id = "";
String name = "";
String version = "";
while (eventType != XmlPullParser.END_DOCUMENT){
String nodeName = xmlPullParser.getName();
switch (eventType){
case XmlPullParser.START_TAG: {
if ("id".equals(nodeName)){
id = xmlPullParser.nextText();
}else if ("name".equals(nodeName)){
name = xmlPullParser.nextText();
}else if ("version".equals(nodeName)){
version = xmlPullParser.nextText();
}
break;
}
case XmlPullParser.END_TAG: {
if("app".equals(nodeName)){
Log.d("MainActivity", "id is "+id);
Log.d("MainActivity", "name is "+name);
Log.d("MainActivity", "version is "+version);
}
break;
}
default:
break;
}
eventType = xmlPullParser.next();
}
} catch (Exception e) {
e.printStackTrace();
}
}
虽然已经2020年了,但是自己跟着书写了一遍,也发生了楼主的问题,楼上大佬说得对,只要在注册文件AndroidManifest.xml的标签中加入android:usesCleartextTraffic="true"就行。