博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
android中XML文件解析遇到“not well-formed (invalid token)”解决办法
阅读量:7050 次
发布时间:2019-06-28

本文共 2253 字,大约阅读时间需要 7 分钟。

异常信息是这样的:

org.apache.harmony.xml.ExpatParser$ParseException: At line 1, column 501: not well-formed (invalid token)

我是调用一个webService原来解析返回的XML字符串,结果遇到了上面的异常。下面是调用webService的核心代码:

 

Runnable runnable = new Runnable() {        @Override        public void run() {            HttpURLConnection conn = null;            InputStream inputStream = null;            try {                URL url = new URL(baseUrl);                conn = (HttpURLConnection)url.openConnection();                conn.setConnectTimeout(10000);                conn.setReadTimeout(8000);                conn.setDoInput(true);                conn.setRequestMethod("GET");                conn.setRequestProperty("Content-Type", "text/html");                conn.setRequestProperty("Accept-Charset", "utf-8");                conn.setRequestProperty("contentType", "utf-8");                inputStream = conn.getInputStream();                byte[] buffer = null;                if(conn.getResponseCode() == 200){                    buffer = new byte[1024];                    ByteArrayOutputStream out = new ByteArrayOutputStream();                    int len;                    while ((len = inputStream.read(buffer)) != -1)                    {                        out.write(buffer, 0, len);                    }                    buffer = out.toByteArray();                }                mCallback.HandleAsync(buffer);                SendMsg("value",buffer);            } catch (Exception e) {                e.printStackTrace();                Log.e("sjr","Network-error");            }            finally{                try {                    if(inputStream != null){                        inputStream.close();                    }                    if(conn != null){                        conn.disconnect();                    }                } catch (IOException e) {                    e.printStackTrace();                    Log.e("sjr","InvokeWebServiceHelper类中释放资源出错");                }            }        }    };

原来是用了InputStreamReader直接一次读完,也没有用conn.getResponseCode() == 200,结果总是出现在这样的异常。现在改成这种循环的方式读从服务端返回的数据。这样就解决了这个问题。因为自己不是搞java的,属于半路出家型的。但从.net方面考虑的话,我想可能是当我用InputStreamReader读这些流的时候,服务端还没有完全将这些流写回客户端,网络一旦出现不稳定就会出现在上面的异常。从这方面想,这个getResponseCode()判断相当的有用。

 

转载地址:http://oadol.baihongyu.com/

你可能感兴趣的文章
有状态、无状态(Stateful and Stateless)
查看>>
XA式、非XA式Spring分布式事务的实现
查看>>
jquery 中的isArray方法分析
查看>>
C语言(3)指针
查看>>
mysql 复杂的查询语句,工作中用到的记录下
查看>>
Spring-Rabbit官方示例
查看>>
Jetson TX2 安装tensorflow
查看>>
鸟哥Linux私房菜基础学习篇 第一部分:Linux的规划与安装_Linux是什么
查看>>
spring+hibernate xml和注解方式配置事务
查看>>
CSS学习
查看>>
基于MOS9.0的OpenStack私有云部署
查看>>
连接MyBatis内部SqlSession与业务接口的代理类MapperProxy
查看>>
link文件安装Eclipse插件
查看>>
Null value was assigned to a property of primitive type setter
查看>>
JAXBContext返回生成XML
查看>>
Java RMI那点事儿:初识HelloWorld
查看>>
如何在RHEV虚拟机中使用USB设备的设置方法
查看>>
flex学习笔记 拖拽
查看>>
SSH三大框架的工作原理及流程
查看>>
Hadoop+HBase平台上安装snappy
查看>>