小程序中使用http请求,发送和接受protobuf数据

小程序中使用http请求,发送和接受protobuf数据


参考文章:(https://juejin.cn/post/6965049311100928013)(https://blog.csdn.net/d7185540/article/details/85105758)

1.安装node环境

2.在全局安装 protobufjs

npm install -g protobufjs

3.安装完成以后 cmd 输入 pbjs 看是否安装成功

pbjs

4.将proto文件转为json文件

pbjs -t json order.proto > order.json

5.生成的order.json

{
 	"nested": {
     	"AwesomeMessage": {
         	"fields": {
             "awesomeField": {
                 "type": "string",
                 "id": 1
 }
      

6.json文件是不能直接使用的,因此我们可以创建一个order.js文件,将json中的数据,复制粘贴在js文件中

module.exports = {
 	"nested": {
     	"AwesomeMessage": {
         	"fields": {
             "awesomeField": {
                 "type": "string",
                 "id": 1
            }
         }
      }
    }
 };

7.然后下载weichatPb文件,将weichatPb文件放到项目中
8.在http请求中使用

const serverUrl ='地址 ';
var protobuf = require('@/weichatPb/protobuf.js'); // 使用下载好的 weichatPb文件
const awesomeConfig  = require('@/proto/order.js'); // 使用创建的js文件
var AwesomeRoot = protobuf.Root.fromJSON(awesomeConfig); 
var AwesomeMessage = AwesomeRoot.lookupType("req_PublicNews"); //  req_PublicNews为message
var resModel = AwesomeRoot.lookupType("res_Model"); // res_Model 为message

const timeout = 15000
export class Api {
	static getOrder() {
		var payload = {httpUserInfo:{userName:"admin",userGuid:"c33de6cc-1727-48cf-8843-39aa60b25d5a"}}; //  发送的参数
		var message = AwesomeMessage.create(payload); 
		var buffer = AwesomeMessage.encode(message).finish();
		var requestBuffer = new Uint8Array([...buffer]).buffer; // 序列化数据
		var url = "/ssm/model/model"
		uni.request({
			url: serverUrl + url,
			method: "POST",
			dataType: 'protobuf',
			data: requestBuffer,
			responseType:"arraybuffer",
			timeout: timeout,
			header: {
				"X-Requested-With": "XMLHttpRequest",
				"Content-Type": "application/octet-stream",
			},
			success(res){
				var deMessage = resModel.decode(res.data); // 转为对象化的数据
				console.log(deMessage)
			}
		});	
	}
}
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值