2016-02-13 18 views
10

Đã làm việc trên điều này một chút không thành công. Tôi có một chức năng chỉ đến một số UIButton để thực hiện các cuộc gọi alamofire tới đường dẫn api của tôi sử dụng tất cả JSON.alamofire.error Code = -6006 "JSON không thể được tuần tự

tôi đang sử dụng Swift 2, alamofire 3, XCode 7 & Rails 4 cho api của tôi mà được triển khai để Heroku

tôi tiếp tục nhận được lỗi này khi tôi bắn ra chức năng:

alamofire .error Code = -6006 "JSON không thể được tuần tự hóa. Dữ liệu đầu vào là 0 hoặc 0.

Đây là mã của tôi:

@IBAction func Save(sender: AnyObject) { 

    let postsEndpoint: String = "https://APIURL" 
    let parameters = [ 
     "users": [ 
      "name": "James McHarty", 
      "avatar": "Some binary data", 
      "post": [ 
       "title": "First Test Post", 
       "body": "This is the first test post for the API", 
       "liked": "8", //will make INT later 
       "img": "more binary data" 
      ] 
     ] 
    ] 

    Alamofire.request(.POST, postsEndpoint, parameters: parameters, encoding: .JSON) 
     .responseJSON { response in 
      guard response.result.error == nil else { 
      // got an error in getting the data, need to handle it 
      print(response.result.error!) 
      return 
     } 

    } 

    print("func'd") 

} 
+1

Dựa trên thông báo lỗi, có vẻ như máy chủ của bạn không gửi lại bất kỳ dữ liệu nào. Bạn đã thử thực hiện cùng một yêu cầu bằng cách sử dụng 'curl' hoặc một công cụ HTTP tương tự? Bạn đang mong đợi cấu trúc JSON nào? Tại sao bạn chắc chắn đó là vấn đề về iOS chứ không phải vấn đề về Rails? –

+0

Đó là đầu vào hữu ích vì vậy tôi đã khắc phục sự cố máy chủ và yêu cầu nhỏ hơn (chỉ dành cho người dùng) và máy chủ của tôi đã chấp nhận yêu cầu POST và giờ đây hiển thị khi tôi thực hiện GET: [{"id": 1, "name": " Don McHart "," avatar ":" một số nhị phân vô nghĩa "," bài đăng ": []}]. Điều này khiến tôi tin rằng tôi đang làm điều gì sai trong các thông số. –

+0

Bạn có thể muốn đóng câu hỏi này và mở câu hỏi Rails mới nếu nội dung phản hồi không phải là nội dung bạn mong đợi. –

Trả lời

1

Đây không phải là Alamofire hoặc lỗi nhanh chóng, Các phản ứng được trả về bởi các máy chủ không có trong định dạng JSON. bạn có thể in ra dữ liệu phản hồi và kiểm tra xem có gì sai trong điều này.

hãy thử mã này để in ra dữ liệu máy chủ của chúng tôi để dễ dàng xác định lỗi và giải quyết vấn đề này.

Alamofire.request("Your url").responseJSON(completionHandler: { (response) in 
    switch response.result { 
    case .success(let value): 
     break 

    case .failure(let error): 
     print("\n\n===========Error===========") 
     print("Error Code: \(error._code)") 
     print("Error Messsage: \(error.localizedDescription)") 
     if let data = response.data, let str = String(data: data, encoding: String.Encoding.utf8){ 
      print("Server Error: " + str) 
     } 
     debugPrint(error as Any) 
     print("===========================\n\n") 
    } 

}) 
3

Câu trả lời được trả về bởi các máy chủ không có trong định dạng JSON. Bạn có thể sử dụng công cụ này để kiểm tra yêu cầu trước.

In ra các mã lỗi không phải là một mã lỗi HTTP, vì sự thất bại trong việc giải quyết JSON

Các vấn đề liên quan