如果陈述判决不能通过

时间:2012-12-06 07:28:51

标签: android

获取服务器返回信息时,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");
    }
}                                   

我不知道为什么。谁能帮助我?非常感谢。

1 个答案:

答案 0 :(得分:3)

目前还不清楚你想要达到的目标,但这三行有三个问题:

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