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

本文共 2310 字,大约阅读时间需要 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()判断相当的有用。

 

转载于:https://www.cnblogs.com/jRoger/articles/2613114.html

你可能感兴趣的文章
hdu–2369 Bone Collector II(01背包变形题)
查看>>
ISAPI_Rewrite应用技巧与方法
查看>>
正则表达式的整理笔记
查看>>
Oracle PL/SQL中的循环处理(sql for循环)
查看>>
Freemarker 各种格式化
查看>>
【BZOJ1758】【WC2010】重建计划(点分治,单调队列)
查看>>
解决Trauncate table没权限
查看>>
django Rest Framework
查看>>
5. TCP客户/服务器程序示例
查看>>
MacOS下Python的多版本管理(pyenv)
查看>>
转载:.net中Cookie的用法
查看>>
ASP.NET SignalR 与 LayIM2.0 配合轻松实现Web聊天室(十一) 代码重构使用反射工厂解耦...
查看>>
SIT&UAT
查看>>
可变类型变量(列表、字典等)定为函数默认值时的陷阱
查看>>
颓の第17周
查看>>
bzoj1233[USACO2009 Open]Tower of Hay干草金字塔
查看>>
class10_Frame 框架
查看>>
curl -w,–write-out参数详解
查看>>
ssm+easyUI datagrid 不能显示后台controller层返回的json数据
查看>>
JAVA算术运算符
查看>>