2016-10-19 33 views
0

AFNetworking收到正確的響應,但解析返回錯誤。我明白,我在經理身上設置了錯誤的設置,但無法理解,那就是對的。AFNetworking中的錯誤響應解析

我的代碼:

manager = [[AFHTTPSessionManager alloc] initWithBaseURL:kAuthorizationUrl]; 
manager.responseSerializer.acceptableContentTypes = [NSSet setWithObjects:@"application/x-plist",nil]; 
[manager POST:@"someURL" parameters:parameters progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject){ 
    NSLog(@""); 
} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) { 
    NSLog(@""); 
}]; 

返回錯誤:從郵遞員

"No value for key in object around character 35." 

響應體:

{ 
"featureAppleTVSynchronisation" = "false"; 
"featureDirectPlay" = "true"; 
"googleLoginSwitchOn" = "true"; 
} 

響應頭:

Accept-Ranges →bytes 
Access-Control-Allow-Credentials →true 
Access-Control-Allow-Methods →GET, POST, OPTIONS 
Connection →keep-alive 
Content-Encoding →gzip 
Content-Type →application/x-plist; charset=UTF-8 
Date →Tue, 18 Oct 2016 19:57:05 GMT 
Server →Apache/2.4.6 (CentOS) 
Transfer-Encoding →chunked 
Vary →Accept-Encoding 
X-Varnish-Retries →0 
cache-control →private, no-cache, no-store, must-revalidate, max-age=0 
expires →Tue, 18-Oct-2016 19:00:28 GMT 
+0

它不是一個JSON,這是一個PLIST(是的 - 我錯過了一個; sign) –

+0

是您的響應序列化器的一個'AFXMLResponseSerializer'實例?即:'manager.responseSerializer = [AFXMLResponseSerializer new];' –

+0

你把'application/x-plist',所以如果你的服務器管理它,它應該返回一個plist信息。如果你使用'AFJSONRequestSerializer'(或響應),它可能會用JSON響應。 – Larme

回答

1

好吧,我發現瞭解決方法:右鍵 代碼

manager = [[AFHTTPSessionManager alloc] initWithBaseURL:kAuthorizationUrl]; 
// Attention please! Here is what I changed! 
manager.responseSerializer = [AFPropertyListResponseSerializer serializer]; 
// End 
[manager POST:@"someURL" parameters:parameters progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject){ 
    NSLog(@""); 
} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) { 
    NSLog(@""); 
}];