“JSONValue failed”从服务器获取数据到iPhone时出错

时间:2011-04-21 05:20:17

标签: iphone objective-c cocoa-touch json http-post

我从服务器获取数据到我的iPhone应用程序。

为了从服务器获取数据,我正在使用HTTP Post方法,并且为了解析获得的数据,我正在使用SBJSON Parser。

第一次启动我的应用时,不会提取数据。

它在Console中显示以下故障日志。该应用程序不会崩溃,但只是未提取该数据。

<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 :(得分:0)

您可以使用ASIHTTRequest,如果您有时间,请尝试向服务器发出新请求。

答案 1 :(得分:0)

如果不分析服务器及其资源,很难确定服务器响应时间过长的原因。

要考虑的一件事是,在您最后一次进行JSON尝试与下次进行“第一次尝试”之间会花多少时间。也许然后看看你是否使用网络浏览器重新创建它。

服务器是生产质量服务器吗?如果没有,它可能会“旋转”以回答第一个请求,这个请求花费的时间太长了。

就个人而言,我编写了一个具有失败重试选项的通用JSON订阅源类。如果它没有收到任何内容或无效的JSON,它将根据您传递的内容以y秒的间隔重试x次。最初需要更多的工作,但有两个原因会带来回报。

1)它可以一遍又一遍地重复使用,并且可以在单个文件中进行更新,例如像Terente的好建议一样使用ASIHTTRequest。

2)虽然您可能不希望响应失败,但可能会出现服务器速度缓慢或网络问题,导致响应有缺陷。