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();
}
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();