protobuff 2.5 使用

来源:互联网 发布:时间序列预测算法编程 编辑:程序博客网 时间:2024/05/29 19:38

1、下载 protobuf-2.5.0 jar 及代码生成工具。 在我的资源里已有

2、编写 Respond.proto 文件

package Respond;option java_package = "com.zy.web.service.proto";option java_outer_classname = "Respond";message ReqMessage{required ReqHead  reqHead           = 1;  //信息请求头required ClientInfo clientInfo   = 2;  //客户信息required OptCode optCode         = 3;  //操作方式   1登录操作   2客户信息同步操作}message ReqHead{required string channelId        = 1;  //代理商渠道码required string screKey          = 2;  //加密串}message ClientInfo{required string accountNm  = 1;        //客户账户required string accountPwd = 2;        //账户密码required string companyNm  = 3;        //客户公司名称required string mobile     = 4;        //客户手机号}enum OptCode{LOGIN_CODE             = 1;         //登录操作SYC_CODE               = 2;         //信息同步操作}message ReqResp{required ResCode  resCd    = 1;        //接口响应码required string resDesc    = 2;        //响应描述required string accountNm  = 3;        //客户账号required string extend     = 9;        //扩展字段enum ResCode{ LOGIN_SUCCESS          = 1;       //登录成功 LOGIN_FAIL             = 2;       //登录失败 SYC_SUCCESS            = 3;       //信息同步成功 SYC_FAIL               = 4;       //信息同步失败  OTHER_ERROR            = 9;       //其他错误}}
这是我 们模拟 其他网站登录我们网站创建的 proto 对象关系 
这个文档 的编写规则 可以点http://wenku.baidu.com/link?url=GLTQVjjJL6Q4PJVNv3iDP2eDNDsbcVM4W6-s2sX8K06Y07eRuOn1tqVkd_ufcWB2m0cjoRJ4FwmD3wD2o3iGMMqe5UEwKF4YMwEAEoEW3Ua"进入查看

3、编写proto文件后,切换到命令提示行里  D:\技术资料\protobuf-2.5.0>protoc.exe --java_out=./ Respond.proto  ;执行生成java文件


4、将生成的java 文件拷贝到你的项目中,并把jar 放到项目中。


5、客户端代码

ReqHead head = ReqHead.newBuilder().setChannelId("wujidao").setScretKey(MD5Util.md5Hex("123456")).build();String pwd = MD5Util.md5Hex("111111");ClientInfo client = ClientInfo.newBuilder().setAccountNm("quaxn02").setAccountPwd(pwd).setCompanyNm("科技").setMobile("18547554241").build();    ReqMessage build = ReqMessage.newBuilder().setReqHead(head).setClientInfo(client).setOptCode(OptCode.LOGIN_CODE).build();    byte[] data = build.toByteArray();try {HttpURLConnection conn = PostData(data);InputStream in = conn.getInputStream();ByteArrayOutputStream bos = null;bos = new ByteArrayOutputStream();byte[] buf = new byte[1024];int r;while ((r = in.read(buf, 0, buf.length)) != -1) {bos.write(buf, 0, r);}in.close();conn.disconnect();} catch (Exception e) {e.printStackTrace();}



6、服务器端代码

ByteArrayOutputStream bos = new ByteArrayOutputStream();InputStream in = req.getInputStream();byte[] buf = new byte[1024];int r;while ((r = in.read(buf, 0, buf.length)) != -1) {bos.write(buf, 0, r);}ReqMessage reqs = ReqMessage.parseFrom(bos.toByteArray());ReqHead head = reqs.getReqHead();String channelId = head.getChannelId();









0 1
原创粉丝点击