我正在从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流用于编写和读取对象的二进制序列化,如果您希望接口与其他客户端/编程语言兼容,请不要过多地使用它们。