4

我每次都调用这个函数并返回 Cocoa Error 3840。我尝试调试和修复它,它在请求时而不是在解析结果时出错


我在请求时在失败块中发现了这个错误。

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=0x109230960 {NSDebugDescription=JSON text did not start with array or object and option to allow fragments not et.}
2013-11-01 12:09:30.925 MagicBox[87431:70b] The operation couldn’t be completed. (Cocoa error 3840.)

这是我的代码提前致谢。

- (void)loginWithUserName:(NSString *)userName
             Password:(NSString *)password
           orFacebook:(NSString *)facebookID
    withResponseBlock:(ResponseBlock)responseBlock {

if (!userName && !facebookID) {
    NSError *error = [NSError errorWithDomain:@"Missing Parameters"
                                         code:400
                                     userInfo:@{ NSLocalizedDescriptionKey : @"Username or FacebookID is required"}];
    responseBlock(error, nil);
}

NSDictionary *params;

if (facebookID) {
    params = @{ @"fb_id": facebookID };
} else {
    params = @{ @"username": userName,
                @"password": password };
}

AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
NSString *loginURL = [self requestWithPath:@"/api/login"];
[manager POST:loginURL
   parameters:params
constructingBodyWithBlock:nil
      success:^(AFHTTPRequestOperation *operation, id responseObject) {
          if (responseBlock) {
              responseBlock(nil, responseObject);
          }
      }
      failure:^(AFHTTPRequestOperation *operation, NSError *error) {
          if (responseBlock) {
              responseBlock(error, nil);
          }
      }];
}
4

4 回答 4

17

我通过添加以下代码行解决了它

manager.responseSerializer = [AFHTTPResponseSerializer 序列化器];

于 2014-08-18T08:01:29.570 回答
4

一直遇到同样的问题。

我通过这个解决了它:

    self.requestSerializer = [AFJSONRequestSerializer serializer];

即仔细检查是否AFHTTPRequestOperationManager使用正确的请求序列化程序。

希望这可以帮到你!

于 2013-12-06T07:43:12.097 回答
3

我通过确保返回的数据与谷歌电子表格 XML 响应(而不是 JSON)正确序列化来解决这个问题

manager.responseSerializer = [AFXMLParserResponseSerializer serializer];
于 2014-02-15T06:14:34.703 回答
2

我通过添加以下代码行解决了它

manager.requestSerializer = [AFJSONRequestSerializer 序列化器];

于 2014-05-27T08:43:22.460 回答