网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
[html]
view plain
copy
- tar -zxf protobuf-2.5.0.tar.gz
1.3 进入软件目录
[html]
view plain
copy
- cd protobuf-2.5.0
1.4 设置编译目录
[html]
view plain
copy
- ./configure --prefix=/User/jack/software/tools/protobuf
- /User/jack/software/tools/protobuf 为自己设定的编译安装目录
1.5 安装
[html]
view plain
copy
- make
- make install
1.6
配置环境变量
[html]
view plain
copy
- sudo vi .bash_profile
- export PROTOBUF=/Users/jack/software/tools/protobuf
- export PATH= P R O T O B U F / b i n : PROTOBUF/bin: PROTOBUF/bin:PATH
1.7 验证
[html]
view plain
copy
- jack-3:bin jack$ protoc --version
- libprotoc 2.5.0
二、代码编写
2.1 查看.proto文件,只贴出了部分文件内容
[html]
view plain
copy
- package mobads.apiv5;
- // 本文件描述API接口版本:5.0.0
- // 版本号信息
- message Version {
- optional uint32 major = 1[default = 0]; // 必填!
- optional uint32 minor = 2[default = 0]; // 选填!
- optional uint32 micro = 3[default = 0]; // 选填!
- };
2.2 下载 protobuf-java-2.5.0.jar
[html]
view plain
copy
- http://download.csdn.net/download/zinc2008/8128155
2.3 生成.java文件
[html]
view plain
copy
- protoc --java_out=./ baidu_mobads_api_5.0.proto
同样只贴出部分java源文件 ( 注意java文件不要修改哦)
[html]
view plain
copy
- // Generated by the protocol buffer compiler. DO NOT EDIT!
- // source: baidu_mobads_api_5.0.proto
- package mobads.apiv5;
- public final class BaiduMobadsApi50 {
- private BaiduMobadsApi50() {}
- }
2.4 代码编写,只贴出关键部分
[html]
view plain
copy
- MobadsRequest adrequest = MobadsRequest.newBuilder().setRequestId(requestId).setAdslot(adslot).build();
- byte[] content = adrequest.toByteArray();
- HttpClient client = new HttpClient();
- PostMethod postMethod = new PostMethod(URL);
- postMethod.addRequestHeader(“Content-Type”, “application/octet-stream;charset=utf-8”);
- postMethod.setRequestEntity(new ByteArrayRequestEntity(content ));
- client.executeMethod(postMethod);
注意content-type 设置为
application/octet-stream。
到此,就完成了通过httpclient的post请求传输protobuf二进制流。
使用protobuf,所有的参数和返回都是对象的形式,这点还是用着比较爽的。
String byte 切换方法
服务端返回字符串
方式一:
[java]
view plain
copy
- Arrays.toString(personInfo.toByteArray())
方式二:
[java]
view plain
copy
- toByteString().toStringUtf8()
客户端解析字符串
方式一:
[java]
view plain
copy
- private static byte[] fromString(String string) {
- String[] strings = string.replace(“[”, “”).replace(“]”, “”).split(", ");
- byte[] result = new byte[strings.length];
- for (int i = 0; i < result.length; i++) {
- result[i] = Byte.parseByte(strings[i]);
- }
- return result;
- }
- XXX.parseFrom(fromString(byteString))
方式二:
[java]
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
. XXX.parseFrom(fromString(byteString))
方式二:
[java]
[外链图片转存中…(img-Ebu6y09i-1715903288228)]
[外链图片转存中…(img-58piXANR-1715903288228)]
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!