У меня проблема с кодом, и я не могу понять, что с ним не так. Возможно, я делаю некоторые действительно глупые вещи, о которых я не знаю, так как я новичок в этих темах. Вот в чем дело ... По сути, я пытаюсь получить объект JSON в качестве ответа со страницы PHP на моем веб-сервере через NSURLConnection. Страница PHP извлекает некоторую информацию из БД и затем кодирует объект JSON, который представляет собой просто массив из четырех числовых строк, например, ["1", "2", "3", "4"]. Соответствующая часть страницы PHP:
<?php
include('mylib.php');
$id = $_GET["id"];
$db = connection();
$stmt = "SELECT col1,col2,col3,col4 FROM mytable WHERE `id` = " .$id;
$ris = mysql_query($stmt,$db);
if ($ris && mysql_num_rows($ris) == 1) {
$arr = mysql_fetch_array($ris);
header('Content-type: application/json');
header("Content-Disposition: attachment; filename=res.json");
$json = json_encode(array($arr[0],$arr[1],$arr[2],$arr[3]));
echo $json;
?>
Пока я получаю ожидаемые данные в нужном формате при загрузке файла из браузера, файл вложения JSON начинается с нежелательного символа новой строки : таким образом, он отображается NSURLConnection немедленно останавливается (я просто получаю '\ n'). Я не сообщаю код для сетевой части: он очень стандартный и должен быть правильным, поскольку он работает для других вещей, которые я делаю ... Я пытался удалить '\ n' через:
$json = trim($json);
но это не сработало. Новая линия все еще там. Откуда это взялось? Что я должен делать? Надеюсь, вы, ребята, можете помочь мне решить эту проблему ... Заранее спасибо!
РЕДАКТИРОВАТЬ
Ok! У меня больше нет новой строки char (я удалил '\ n' в начале mylib.php), но я пока не могу получить объект JSON через NSURLConnection. Кажется, метод
connection:didReceiveData:
сейчас никогда не вызывается. Но у меня нет ошибки в соединении: он просто получает 0 байт. Обратите внимание, что когда у меня был символ \ n в начале, я получил 1 байт. Из браузера работает отлично. Что мне делать?