0

获取服务器返回信息时,LOGCAT显示1 2 3,结果为1、5、6。

判断if语句时,有错误。我认为结果是 1,但它仍然是错误的。

try {
    URL url=new URL(urlstr);
    URLConnection conn = null;
    Log.i("Text", "1");
    try {
        conn = url.openConnection();
        Log.i("Text", "2");
        InputStream in=conn.getInputStream();
        Log.i("Text", "3");
        byte[] buffer=new byte[in.available()];
        in.read(buffer);
        String result=new String(buffer);
        Log.i("Text", "result="+result);
        if(result.equals("1"))
        {    
            Log.i("Text", "4");
        } else {
            Log.i("Text", "5");
        }
        Log.i("Text", "6");
    }
}                                   

我不知道为什么。有人可以帮我吗?非常感谢。

4

1 回答 1

3

目前尚不清楚您要达到的目标,但是这三行存在三个问题:

byte[] buffer=new byte[in.available()];
in.read(buffer);
String result=new String(buffer);
  1. 你几乎应该使用available(). 相反,创建一个固定大小的缓冲区(听起来您不希望有太多数据,所以只需要一个小缓冲区就可以了。)如果调用时没有可用数据available()怎​​么办?您将创建一个空数组 - 当然您不想这样做。
  2. 您忽略了InputStream.read(). 永远不要那样做。您不知道实际读取了多少数据。
  3. 您正在String从 a创建一个byte[]而不指定编码。不要那样做。数据实际使用的是哪种编码?

我的猜测是,您要么传入一个空数组,要么实际上读取了多个字节。

于 2012-12-06T07:33:07.740 回答