2016-10-19 38 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(@""); 
}];