Как получить содержимое (объект JSON) html-файла из моего приложения для iPhone? - PullRequest
0 голосов
/ 22 января 2012

У меня есть приложение для iPhone, которое получает ответ из php-файла. Этот ответ генерирует HTML-файл, в котором тело содержит объект json. Как мне получить этот объект JSON?

$query = "SELECT username FROM userData WHERE username = '$username'";  
    $result = mysql_query($query);  
    if (mysql_num_rows($result) > 0) { 
        sendResponse(200, json_encode('SUCCESS Notification'));
    } else { 
    $query = "INSERT INTO userData (username,password,email,signup_date) VALUES ('$username','$password','$email','$date')";
    $result=mysql_query($query,$connection) or die (mysql_error()." Kann Tabelle der Datenbank nicht lesen!");
    }  

    function sendResponse ($status = 200, $body ='', $content_type = 'application/json'){
            $status_header = 'HTTP/1.1 ' . $status . ' ' . 'OK';
            header($status_header);
            header('Content-type:' . $content_type);
            echo $body;
        }

Вот что происходит в моем приложении для iphone:

 NSURLResponse *theResponse =[[NSURLResponse alloc]init];
        NSError *error;
        NSData *data = [NSURLConnection sendSynchronousRequest:request returningResponse:&theResponse error:&error];      

         NSDictionary *jsonDictionaryResponse =[NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:&error];
        NSLog(@"json response = %@", jsonDictionaryResponse);

Ответы [ 3 ]

1 голос
/ 22 января 2012

Насколько я вижу, вы не добавляете HTML-теги вокруг строки, кодированной в JSON.Таким образом, вы можете просто проанализировать все тело ответа.Я рекомендую вам использовать jQuery (если вы этого еще не сделали) или JSON-библиотеку .

Но учтите, что вы должны изменить свой MIME-тип наapplication/json при отправке данных JSON, и что json_encode строка не имеет смысла.

sendResponse(200, json_encode(array('SUCCESS Notification')), 'application/json');
0 голосов
/ 22 января 2012

Я не совсем уверен, с какой целью вы отправляете HTML-файл с JSON, но это не очень хорошая практика.HTML - это документ, а JSON - это структура данных, которую вы сейчас включаете в текст в виде текста.Вы просто используете JSON из ответа и "выбрасываете все остальное"?Потому что тогда я согласен с Пеккой изменить твой вывод.Я не уверен, насколько вы знакомы с PHP, но вы можете изменить вывод страницы на что угодно.Только не помещайте html в php-файл, который вы запрашиваете, и установите для типа выхода значение json, например:

header('Content-type:text/json');

В противном случае вы также можете использовать регулярные выражения или DOM-парсер, предложенный Пеккой.

0 голосов
/ 22 января 2012

Если это правильно отформатированный HTML (с начальным и конечным тегами), то вы можете использовать любой анализатор XML, например NSXMLParser, или использовать HPPLE анализатор для анализа HTML.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...