Проблемы с получением объекта JSON со страницы PHP через NSURLConnection - PullRequest
0 голосов
/ 07 марта 2011

У меня проблема с кодом, и я не могу понять, что с ним не так. Возможно, я делаю некоторые действительно глупые вещи, о которых я не знаю, так как я новичок в этих темах. Вот в чем дело ... По сути, я пытаюсь получить объект 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 байт. Из браузера работает отлично. Что мне делать?

1 Ответ

1 голос
/ 07 марта 2011

Я знаю, это может показаться очевидным, но попробуйте посмотреть перед открывающим тегом <?php.

edit: или, возможно, в конце "mylib.php".

...