有关InputStream.available()一问
http://www.javanb.com/j2me/1/10733.html
“返回此输入流方法的下一个调用方可以不受阻塞地从此输入流读取(或跳过)的字节数”
如果这是一个Socket的InputStream,那么它的read方法就可能导致阻塞(即表示read方法可能一直等待对方发送的数据而不返回)
available根本不是表示这个流有多长的意思,对于Socket之类的InputStream根本无法判断这个流会有多长。HttpConnection是基于更高层次罢了,它本质上就是向服务器的80端口发起了一个Socket连接
所以不能说有共同之处,而是HttpConnection依赖于Socket的存在。
http://www.javanb.com/j2me/1/10733.html
“返回此输入流方法的下一个调用方可以不受阻塞地从此输入流读取(或跳过)的字节数”
如果这是一个Socket的InputStream,那么它的read方法就可能导致阻塞(即表示read方法可能一直等待对方发送的数据而不返回)
available根本不是表示这个流有多长的意思,对于Socket之类的InputStream根本无法判断这个流会有多长。HttpConnection是基于更高层次罢了,它本质上就是向服务器的80端口发起了一个Socket连接
所以不能说有共同之处,而是HttpConnection依赖于Socket的存在。
使用
ByteArrayOutputStream bos = new ByteArrayOutputStream();
byte[] buffer = new byte[1024];
int count = 0;
while ((count = inputStream.read(buffer)) >= 0) {
bos.write(buffer, 0, count);
Log.e("---", "0");
}
byteBuffer = bos.toByteArray();
取到的数据照样是不完整的,或者有的时候会阻塞在循环里面,怎么回事啊?
HttpURLConnection hc = (HttpURLConnection) u.openConnection();
hc.setConnectTimeout(10000);
hc.setReadTimeout(10000);
hc.connect();
int mTotalBytes = hc.getContentLength();
这个问题太尴尬了,因为后面xml解析出错,我看了下log打印内容不够,一直以为是获取的内容不够呢
用system.out.println()打印就可以了