Android getInputStream.ReadBoolean issue



我正在从PHP脚本中执行SQL查询,如果成功,则echo为1,如果不成功,则为0。这只是体内的回声。

要发送我想在数据库中查询的信息,我使用这个:(这是一个使用AsyncTask的Android项目,问题在使用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。我用readBoolean错了吗?提前谢谢。

错误。回复是纯文本。。。你应该使用这样的东西:

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

记住完成后关闭流。

我不太明白你对正文和url参数做了什么。。。无论如何DataOutput和DataInput流用于编写和读取对象的二进制序列化,如果您希望接口与其他客户端/编程语言兼容,请不要过多地使用它们。

相关内容

  • 没有找到相关文章

最新更新