Я делаю SQL-запрос из PHP-скрипта, который отображает 1, если успешно, и 0, если нет. Это просто отражено в теле.
Чтобы отправить информацию, которую я хочу запросить в базе данных, я использую это:
(Это проект 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) и отображает 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;
Но по какой-то причине он говорит, что значение равно true, если 0 или 1. Я использую readBoolean неправильно? Заранее спасибо.
Неправильно. Ответ представляет собой простой текст … Вы должны использовать что-то вроде этого:
reader = new InputStreamReader (connection.getInputStream());
int c = reader.read();
if (c == '0') {
} else if (c == '1') {
}
не забудьте закрыть поток после того, как сделано.
Я не очень хорошо понимаю, что вы делаете с телом и параметрами URL … В любом случае. Потоки DataOutput и DataInput предназначены для записи и чтения двоичных сериализаций объектов, не стоит слишком много играть с ними, если вы хотите, чтобы ваши интерфейсы были совместимы с другими клиентами / языками программирования.
Других решений пока нет …