(cocoa错误3840.)“(字符0附近的值无效)AFNetworking

使用GET方法从服务器中检索文件时,我得到以下错误:

Error: Error Domain=NSCocoaErrorDomain Code=3840 "The operation couldn't be completed. (Cocoa error 3840.)" (Invalid value around character 0.) UserInfo=0x16e81ed0 {NSDebugDescription=Invalid value around character 0.} 

我已经尝试了许多不同的东西,我相信这可能与我试图获得的文件上的JSON格式有关。

这是我一直在使用的代码:

 _username = @"JonDoe"; NSDictionary *parameters = @{ @"username" : _username}; AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager]; manager.responseSerializer = [AFJSONResponseSerializer serializerWithReadingOptions:NSJSONReadingAllowFragments]; manager.responseSerializer.acceptableContentTypes = [NSSet setWithObject:@"text/plain"]; [manager GET:@"http://.........." parameters:parameters success:^(AFHTTPRequestOperation *operation, id responseObject) { NSLog(@"JSON: %@", responseObject); } failure:^(AFHTTPRequestOperation *operation, NSError *error) { NSLog(@"Error: %@", error); }]; 

我的POST方法工作正常。 我似乎无法解决这个问题与GET。 有任何想法吗? 谢谢。

根据评论中的讨论,看起来你的GET请求是成功的(响应代码200),但是响应正文不是你使用AFJSONResponseSerializer所请求的JSON(也不是JSON片段)。 基本的AFHTTPResponseSerializer可以用于不是JSON的响应。

我很确定你有一个来自服务器的有效响应,但是你的响应不是JSON中的有效格式,可能是因为你在第一个{之前有一个carachters。 请尝试:在浏览器中手动input相同的URL地址,您将在响应中看到罪魁祸首。 希望它有帮助。

嗨,这就是我发现的问题:我通过一个函数来调用Alamofire来validation用户:我使用了“Login User”这个函数,用“body”(email:String,password:string)这将被传递

我的错误正是:

(alamofire.aferror.responseserializationfailed(alamofire.aferror.responseserializationfailurereason.jsonserializationfailed(error domain = nscocoaerrordomain code = 3840“invalid value around character。”)userinfo = {nsdebugdescription =字符0附近无效值

字符0是这里的关键字:表示“email”的调用与参数不匹配:请参阅下面的代码

func loginUser(email:String,密码:String,已完成:@escaping downloadComplete){let lowerCasedEmail = email.lowercased()

  let header = [ "Content-Type" : "application/json; charset=utf-8" ] let body: [String: Any] = [ "email": lowerCasedEmail, "password": password ] Alamofire.request(LOGIN_USER, method: .post, parameters: body, encoding: JSONEncoding.default, headers: header).responseJSON { (response) in if response.result.error == nil { if let data = response.result.value as? Dictionary<String, AnyObject> { if let email = data["user"] as? String { self.userEmail = email print(self.userEmail) } if let token = data["token"] as? String { self.token_Key = token print(self.token_Key) } 

函数参数中的“email”在parsing时必须与let“email”匹配,然后才能正常工作。我不再有错误…而且字符0是Alamofire请求的“body”参数中的“email”

希望这可以帮助