标签:
最近项目遇到一种情况就是,为了减少流量,服务器的正确返回数据会用MsgPack格式进行返回,而错误数据或者网络错误则会以JSON数据格式返回.
首先标准的AFNetWorking是不能解析MsgPack数据格式的,需要加入相应的三方库, 而AFNetWorking的大牛作者为我们提供了两个库,可以很方便的加入进来:
如果用CocoaPod管理三方库, 在Podfile中加入以下两行,这样两个库就加入到工程中了:
pod 'AFMsgPackSerialization', '~> 0.0.1' pod 'MsgPackSerialization', '~> 0.0.1'如果手动管理,则需要下载这两个库放入工程中.
第二步就是要根据返回的格式动态解析
AFHTTPRequestOperationManager的responseSerializer和acceptableContentTypes进行设置
我自定义了一个Manager的子类进行数据请求和解析,所以代码如下:
//根据返回类型解析数据 self.responseSerializer = [AFCompoundResponseSerializer compoundSerializerWithResponseSerializers:@[[AFMsgPackResponseSerializer serializer],[AFJSONRequestSerializer serializer]]]; self.responseSerializer.acceptableContentTypes = [NSSet setWithObjects:@"application/x-msgpack", @"application/json", nil];
顺利达到要求, 不管什么格式返回,都能解析和显示了.
AFNetWorking同时解析MsgPack和JSON等多种返回数据
标签:
原文地址:http://blog.csdn.net/lcl130/article/details/44195359