前言
最近用ProtocolBuf协议
进行网络传输,数据也是转为ProtocolBuf。记录下使用流程
Protocol Buffers介绍
protocol buffer
全称Google Protocol Buffer
,是Google 公司内部的混合语言数据标准。他们用于RPC 系统和持续数据存储系统。
Protocol Buffers
是一种轻便高效的结构化数据存储格式,可以用于结构化数据串行化,或者说序列化,它很适合做数据存储或RPC 数据交换格式。可用于通讯协议、数据存储等领域的语言无关、平台无关、可扩展的序列化结构数据格式。目前官方提供了C++、C#、DART、GO、Java、Python 六种语言的API,也可以支持其他语言,实现它的派生方法即可。
官方地址:https://developers.google.cn/protocol-buffers/
环境安装
brew install automake
brew install libtool
brew install protobuf
上面安装好protobuf完成
proto源文件转OC
1、 终端 cd 到一个新文件架下:
touch geexLogData.proto
2、打开 编辑内容
syntax = "proto3";
message geexLogData {
bytes body = 1;
string flagStr = 2;
}
3、生成对应的.h 与.m文件
protoc ./geexLogData.proto --objc_out=./
生成对应的文件
使用
1、工程导入Protobuf
pod 'Protobuf'
2、创建的.h 与.m文件拖入工程;网上都让加-fno-objc-arc,我没有加也是正常
3、当正常的model 使用
Person *person = [Person new];
person.personId = 1;
person.personName = @"Carson";
person.personGender = @"Male";
person.personMessage = @"I'm the best in the world !";
NSData *personData = [person data];
4、网络传输
AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
manager.requestSerializer = [AFHTTPRequestSerializer serializer];
NSURL *url = [NSURL URLWithString: urlStr];
NSMutableURLRequest *request = [[NSMutableURLRequest alloc]initWithURL:url cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:20];
[request setValue:@"application/x-protobuf" forHTTPHeaderField:@"Content-Type"];
[request setValue:@"application/x-protobuf" forHTTPHeaderField:@"Accept"];
request.HTTPMethod = @"POST";
geexLogBody *body = [[geexLogBody alloc] init];
body.body = parameters;
request.HTTPBody = [[body data] base64EncodedDataWithOptions:0];
AFHTTPResponseSerializer *responseSerializer = [AFHTTPResponseSerializer serializer];
manager.responseSerializer = responseSerializer;
[[manager dataTaskWithRequest:request uploadProgress:nil downloadProgress:nil completionHandler:^(NSURLResponse * _Nonnull response, id _Nullable responseObject, NSError * _Nullable error) {
}] resume];
正常model赋值,讲对象序列化data 然后上传。
估计我处理的问题,我也没发现比json数据少,没感到有什么好处。 可能后台能直接反序列化为model
网友评论