有关InputStream.available()一问 
http://www.javanb.com/j2me/1/10733.html
“返回此输入流方法的下一个调用方可以不受阻塞地从此输入流读取(或跳过)的字节数”
如果这是一个Socket的InputStream,那么它的read方法就可能导致阻塞(即表示read方法可能一直等待对方发送的数据而不返回)
available根本不是表示这个流有多长的意思,对于Socket之类的InputStream根本无法判断这个流会有多长。HttpConnection是基于更高层次罢了,它本质上就是向服务器的80端口发起了一个Socket连接
所以不能说有共同之处,而是HttpConnection依赖于Socket的存在。

解决方案 »

  1.   

    可是,就算我不用inputStream.available();
    使用
                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();
    取到的数据照样是不完整的,或者有的时候会阻塞在循环里面,怎么回事啊?
      

  2.   

    URL u = new URL(mUrl);
    HttpURLConnection hc = (HttpURLConnection) u.openConnection();
    hc.setConnectTimeout(10000);
    hc.setReadTimeout(10000);
    hc.connect();
    int mTotalBytes = hc.getContentLength();
      

  3.   

    我明白了,其实我的获取的内容不少,而是通过log打印的时候,只能打印出一部分,让我以为少了
    这个问题太尴尬了,因为后面xml解析出错,我看了下log打印内容不够,一直以为是获取的内容不够呢
    用system.out.println()打印就可以了