获取服务器返回信息时,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");
}
}
我不知道为什么。谁能帮助我?非常感谢。
答案 0 :(得分:3)
目前还不清楚你想要达到的目标,但这三行有三个问题:
byte[] buffer=new byte[in.available()];
in.read(buffer);
String result=new String(buffer);
available()
。相反,创建一个固定大小的缓冲区(听起来你不会期望太多的数据,所以只需一个小缓冲区就好了。)如果在调用available()
时没有数据可用怎么办?你将创建一个空数组 - 当然你不想这样做。InputStream.read()
的返回值。 从不那样做。您不知道实际读取了多少数据。String
创建byte[]
而未指定编码。不要那样做。哪个编码是实际使用的数据?我的猜测是你要么传入一个空数组,或你实际上读的是多个字节。