安装protobuf

  • 使用Home Brew安装Protobuf:
brew install protobuf
  • 查看是否安装成功
protoc --version
  • 进入文件路径命令行执行
protoc --python_out=./ ./HT_moment_body.proto

  • 此时会在当前目录下生成:HT_moment_body_pb2.py

  • 执行命令后生成的 pb 文件中并没有方法和类,导致报错;
  • 因新版本的 grpc_tools 不直接生成定义了,而是运行中动态生成,所以还是可以正常运行的。

 

🌰

from proto import HT_moment_body_pb2
from common.configHTTP import myhttp
from common.getJwt import get_authorization
from google.protobuf import json_format
import json

#请求
expose_record =HT_moment_body_pb2.GetExposeRecordRequest()

#请求值赋值
expose_record.userid =10283233
expose_record.filter = 2
expose_record.ostype = 0
expose_record.version =327684
expose_record.area_code =b'CN'


###数据编译为字节流
data = expose_record.SerializeToString()

url = "/v1/moment/expose_record"

get_headers = {
    'Authorization': get_authorization(10283233),
    'Content-type': 'application/x-protobuf'
}

response = myhttp().main_http("post", url, data=data, headers=get_headers)

#返回
res = HT_moment_body_pb2.GetExposeRecordResponse()

###字节流转对象
res.ParseFromString(response.content)

print(res)

 

字节传输

  • expose_record.area_code =b’CN’

 

JSON ->protobuf

from google.protobuf import json_format
import json
req={
    'userid': 10283233,
    'filter': 2,
    'ostype': 0,
    'version': 327684,
    'area_code': "CN"
}
#json->字符串->字节流
expose_record = json_format.Parse(json.dumps(req),HT_moment_body_pb2.GetExposeRecordRequest())

原文地址:http://www.cnblogs.com/QingshanY/p/16886408.html

1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长! 2. 分享目的仅供大家学习和交流,请务用于商业用途! 3. 如果你也有好源码或者教程,可以到用户中心发布,分享有积分奖励和额外收入! 4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解! 5. 如有链接无法下载、失效或广告,请联系管理员处理! 6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需! 7. 如遇到加密压缩包,默认解压密码为"gltf",如遇到无法解压的请联系管理员! 8. 因为资源和程序源码均为可复制品,所以不支持任何理由的退款兑现,请斟酌后支付下载 声明:如果标题没有注明"已测试"或者"测试可用"等字样的资源源码均未经过站长测试.特别注意没有标注的源码不保证任何可用性