2013-10-28 13 views
8

Ngay sau khi tôi kích hoạt một yêu cầu tới một tài nguyên JSON tôi nhận được như sau:AFNetworking 2.0 và đáp ứng serialization Tùy chọn

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=0x1d87a2c0 {NSDebugDescription=JSON text did not start with array or object and option to allow fragments not set.} 

Vấn đề là nơi tôi nên thiết lập cho phép mảnh vỡ trong AFNetworking 2.0?

CẬP NHẬT:

Lớp học của tôi là lớp con của AFHTTPSessionManager. Tôi đã tạo ra một JSONResponseSerializer và nó cũng không hoạt động.

JSON được trả lại như sau:

[{"StoryId":1,"Title":"The big red dog","Abstract":"There was a big red dog and the dog was very big","IsFeatured":true}] 

-(instancetype) initWithBaseURL:(NSURL *)url 
{ 
    NSURL *base = [NSURL URLWithString:@"URL to the web service that returns the json"]; 
    self = [super initWithBaseURL:base]; 

    AFJSONResponseSerializer *responseSerializer = [AFJSONResponseSerializer serializerWithReadingOptions:NSJSONReadingAllowFragments]; 

    [self setResponseSerializer:responseSerializer]; 

    return self; 
} 

Lỗi được thông báo như sau:

[0] (null) @"NSDebugDescription" : @"Invalid value around character 0." 

ỨNG PHÓ TỪ WEB SERVER:

[{"StoryId":1,"Title":"The big red dog","Abstract":"There was a big red dog and the dog was very big","IsFeatured":true}] 

phản hồi trạng thái TỪ WEB SERVER:

HTTP/1.1 200 OK 
Server: Microsoft-IIS/7.0 
X-Powered-By: ASP.NET 
Content-Type: application/json;charset=utf-8 
X-AspNetMvc-Version: 3.0 
Connection: close 
Date: Mon, 28 Oct 2013 20:02:21 GMT 
Content-Length: 121 
Cache-Control: private 
X-AspNet-Version: 4.0.30319 

[{"StoryId":1,"Title":"The big red dog","Abstract":"There was a big red dog and the dog was very big","IsFeatured":true}] 
+0

Đó là vấn đề với phản hồi của máy chủ web, ** không ** với AFNetworking. – akashivskyy

+0

Câu trả lời hợp lệ! Tôi vừa xác thực JSON và nó là JSON hợp lệ được trả về. –

+0

Tôi không nói là * không hợp lệ *. Tôi nói rằng * vấn đề là do nó *. Dữ liệu JSON có xu hướng được chứa trong một mảng hoặc đối tượng. @Wain là đúng, bạn phải nói với AFNetworking mà các tùy chọn nên 'NSJSONSerialization' sử dụng để đọc dữ liệu JSON. – akashivskyy

Trả lời

7

Bạn cần phải tạo dụ của riêng bạn AFJSONResponseSerializer sử dụng serializerWithReadingOptions: và cấu hình hệ thống của bạn để sử dụng nó (thay vì mặc định JSON phản ứng serialiser).

+0

Vui lòng xem câu hỏi được cập nhật của tôi! Tôi đã thêm AFJSONResponseSerializer nhưng vẫn không sử dụng! –

+0

JSON của bạn có vẻ không có mảnh vỡ. Bạn có chắc là lớp tùy chỉnh của mình đang được sử dụng không? – Wain

+0

... và bạn có chắc chắn rằng phản hồi không bị hỏng hoặc bị kèm theo trong cái gì khác không? – akashivskyy

0

Tôi gặp vấn đề tương tự trước đây. Và sau vài giờ tìm kiếm và đọc, tôi đã tìm thấy nội dung:

self.responseSerializer = [AFHTTPResponseSerializer serializer]; self.responseSerializer.acceptableContentTypes = [NSSet setWithObjects: @ "application/json; charset = UTF-8", nil];

hãy thử và chúc bạn may mắn!

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