【问题标题】:APNS :Error Domain = NSCocoaErrorDomain Code=3840APNS:错误域 = NSCocoaErrorDomain 代码 = 3840
【发布时间】:2015-03-11 00:56:31
【问题描述】:

我正在向服务器注册设备数据,以获取推送通知。这是代码,

[NSURLConnection sendAsynchronousRequest: request
                                           queue: _postQueue
                               completionHandler: ^(NSURLResponse *response, NSData *responseData, NSError *connectionError) {
                                   if (connectionError) {
                                       //
                                   } else {
                                      NSError *error = nil;
        NSDictionary *dictionary = [NSJSONSerialization JSONObjectWithData: responseData options: NSJSONReadingMutableContainers error: &error];
                                   }
                               }];

我收到错误

Error Domain=NSCocoaErrorDomain Code=3840 "The operation couldn’t be completed. (Cocoa error 3840.)" (JSON text did not start with array or object and option to allow fragments not set.) UserInfo=0x17057f60 {NSDebugDescription=JSON text did not start with array or object and option to allow fragments not set.}

有人可以帮忙解决这个问题吗?

【问题讨论】:

    标签: ios json apple-push-notifications sendasynchronousrequest


    【解决方案1】:

    错误消息准确地告诉您出了什么问题:来自您的服务器的响应不包含有效的 JSON。从技术上讲,JSON 必须以数组或对象(字典)开头。无论您的服务器返回什么都不是。无论使用NSJSONReadingAllowFragments 选项,您都可以强制使用 JSON。

    如果在使用该选项后您仍然收到错误,那么您的服务器可能返回格式错误的 JSON(或根本没有 JSON)。您为什么不查看服务器的日志以准确了解您发回的内容?

    【讨论】:

    • 谢谢!但是当我使用 NSJSONReadingAllowFragments 选项时出现错误,错误域 = NSCocoaErrorDomain 代码 = 3840 “操作无法完成。(可可错误 3840。)”(字符 0 周围的值无效。) UserInfo = 0x1473bee0 {NSDebugDescription = 周围的值无效字符 0.}
    • 所以您的服务器可能没有返回 JSON,或者返回完全无效的 JSON。尝试将您的 NSData 打印为字符串,而不是查看返回的内容。
    • 谢谢!你是对的 。除了我通过应用程序发送的那些参数之外,服务器正在检查额外的参数。一些参数为零。那些 nil 参数导致了这个问题。
    【解决方案2】:

    我遇到了同样的问题,看看我在这里做了什么

    我已将我的 json 解析方法更改为

    let decodedApps = try JSONDecoder().decode(class.self, from: data!)
    

    这里的类包含 json 数据键中存在的所有键 现在您可以使用 decodedApps 作为字典.....其中包含键值对 可能会有所帮助

    【讨论】:

      猜你喜欢
      • 2017-06-16
      • 2018-04-08
      • 2020-03-14
      • 2016-02-26
      • 1970-01-01
      • 2016-07-10
      • 1970-01-01
      • 1970-01-01
      • 2014-11-02
      相关资源
      最近更新 更多