代码如下,获取服务器返回的信息,LOGCAT显示为,1,2,3,result=1,5,6,但是到这个if判断的时候,它就一直判断是错误,明明获得的reuslt是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.   

    在这句搞个断点,watch一下result到底是什么东西
    说不定是“1 "(1后面带空格)这样呢
    Log.i("Text", "result="+result); 
      

  2.   

    result.trim().equals("1")这么写试试
      

  3.   

    Lz的 result=1,5,6  后面又加上明明获得的reuslt是1   我到是觉得LZ真心坑啊....如果result=1,5,6 那么请根据“,”号分隔字符串变成字符串数组,并遍历字符串数组时里面添加字符串判断语句。如果result=1  那么请在判断语句条件变成if(result!= null&&("1".equals(result.trim())))     之所以在判断语句中将1放在equals前面,是为了防止当result为null时,报空指针
      

  4.   

    为什么呢,这样写了以后是对的,但是我在后台输入返回值的时候明明没有空格符,为什么传过来就有空格符了,后台的doGet和doPost都是out.print("1"),传到前端就就空格符了,,,
      

  5.   

    那就得看你后台的doGet和doPost传过来的URL地址中 后面的携带的多个参数之间是否有空格了
      

  6.   

    介个我就不知道了,我一般传来传去的String值我都会去掉前后的空格。
      

  7.   

    LZ你的result不一定是1哦,虽然打出来的是1,但是也有可能是你的byte数组里面存储的是{49,32,32,.....}结果就是你将这个byte数组转换成string的时候显示出1,但是后面的还有无数空格屏幕没有显示而已,你可以将你的if语句改成if(result.contains("1"))试试或者截取下字符串看看,我也曾遇到过这种情况,希望对你有帮助哦
      

  8.   

    不要相信android下的断点,她妹的有时候是骗人的。。我一般打log来分析的
      

  9.   

    这样的事经常遇到!要有耐心!
    equals和==的区别楼主自己查吧,我说不清!有时程序那的疏忽就会导致equals不成立或==不成立,我遇到几次都用如下代码 解决了
     if(result.equals("1")||result=="1")
      

  10.   

    1。注意:
    byte[] buffer=new byte[in.available()];
    这句不对噢, in.available()可能暂时为0。看运气。
    最好还是 用 in.read(buffer) ,read返回值为读入长度,-1时表示结束。2.用Log把 read的结果都打印出来,看看头几个字节都是什么。3. 注意编码问题。
      

  11.   

    去掉空格  然后 转化为字符串  在equals
      

  12.   

    打log把result的值打出来看看吧
      

  13.   

    代码中这三行有问题:
    byte[] buffer=new byte[in.available()];
    in.read(buffer);
    String result=new String(buffer);
    1.不能使用available()。应该创建一个固定大小的缓存。
    2.你忽略了InputStream.read()的返回值。因为你不知道现在实际上有多少数据已读。
    3.从byte[]中创建的string没有指定编码。