2014-09-22 24 views
0

我正在做一个PHP脚本的SQL查询,该回声的1如果成功和0,如果不成功。这只是在身体中回应。Android的getInputStream.ReadBoolean问题

要送我想在数据库查询的信息,我使用的是这样的: (这是一个Android项目,使用的AsyncTask和问题是“新”线程,与doInBackground创建)

 protected Boolean doInBackground(String... params) { 
     try { 
     String request = "PHP-file-location"; 
     URL url = new URL(request); 
     HttpURLConnection connection = (HttpURLConnection) url.openConnection();   
     connection.setDoOutput(true); 
     connection.setDoInput(true); 
     connection.setInstanceFollowRedirects(false); 
     connection.setRequestMethod("POST"); 
     connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded"); 
     connection.setRequestProperty("charset", "utf-8"); 
     connection.setRequestProperty("Content-Length", "" + Integer.toString(urlParameters.getBytes().length)); 
     connection.setUseCaches (false); 

     DataOutputStream os = new DataOutputStream(connection.getOutputStream()); 
     os.writeBytes(urlParameters); 
     os.flush(); 
     os.close(); 
     ... continues. 

的PHP脚本处理的信息(这部分作品 - 检查以.html形式)和Echo的0或1,我现在想在我的Android应用程序回暖:

DataInputStream is = new DataInputStream(connection.getInputStream()); 
     boolean response = is.readBoolean(); 
     is.close(); 
     connection.disconnect(); 

     if(is!=null) 
      is.close(); 
     if(os!=null) 
      os.close(); 
     return response; 

但对于一些它说价值是真的,如果0或1都是。我是否使用r eadBoolean错误?提前致谢。

回答

0

错了。响应是一个纯文本...您应该使用类似这样的内容:

reader = new InputStreamReader (connection.getInputStream()); 
     int c = reader.read(); 
     if (c == '0') { 

     } else if (c == '1') { 

     } 

请记住完成后关闭流。

我不明白你在做什么与身体和网址参数......无论如何。 DataOutput和DataInput流用于写入和读取对象的二进制串行化,如果您希望您的接口与其他客户端/编程语言兼容,则不要过多地使用它们。

+0

谢谢! .read返回48如果0和49,如果1.我想这是ASCII或什么的,但它的作品。 :-) – 2014-09-22 12:58:12

+0

是的,就像读一个txt文件一样。它是UTF-8或其他东西。 – eduyayo 2014-09-22 13:06:40