«Ошибка JSONValue» Ошибка при загрузке данных с сервера на iPhone - PullRequest
1 голос
/ 21 апреля 2011

Я загружаю данные с сервера в приложение для iPhone.

Для получения данных с сервера я использую метод HTTP Post, а для анализа полученных данных - SBJSON Parser.

При первом запуске приложения данные не извлекаются.

Показывает следующий журнал ошибок в консоли. Приложение не вылетает, а только что данные не извлекаются.

<html>Your request timed out.  
Please retry the request.                                                                                                 </html>
2011-04-21 08:39:06.339 Hive[1594:207] -JSONValue failed. Error trace is: (
    "Error Domain=org.brautaset.JSON.ErrorDomain Code=3 \"Unrecognised leading character\"   UserInfo=0x4cabe90 {NSLocalizedDescription=Unrecognised leading character}"
)

Приложение правильно извлекает данные со второго раза. Эта ошибка выдается только при первом запуске приложения.

Что может быть не так?

Ответы [ 2 ]

0 голосов
/ 05 мая 2011

Без анализа сервера и его ресурсов трудно определить, почему серверу требуется слишком много времени для ответа.

Следует задуматься над тем, сколько времени происходит между последним выполнением JSON.попытка и в следующий раз вы делаете свою "первую попытку".Может быть, затем посмотреть, если вы воссоздаете его с помощью веб-браузера.

Является ли сервер качественным сервером?В противном случае это может быть «раскрутка» для ответа на первый запрос, который занимает слишком много времени для первого ответа.

Лично я написал общий класс фида JSON, в котором есть опция повторной попытки сбоя.Если он ничего не получает или недействителен JSON, он будет повторять x раз с интервалом в y секунд в зависимости от того, что вы передали.Сначала это требует немного больше работы, но окупится по двум причинам.

1) Его можно многократно использовать и обновлять, например, используя ASIHTTRequest, например, хорошее предложение от Terente, которое можно сделать в одном файле.

2) Несмотря на то, что вы не ожидаете сбоя ответа, может возникнуть медленная работа сервера или проблемы с сетью, что приведет к некорректному ответу.

0 голосов
/ 21 апреля 2011

Вы можете использовать ASIHTTRequest и, если у вас есть тайм-аут, попробуйте сделать новый запрос к серверу.

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