小编Jom*_*ner的帖子

如何在Python中使用Protobuf有效负载发出http请求

我有一项服务,该服务公开了两个交换API消息(有效载荷)的REST API。到目前为止,我一直使用HTTP / JSON,并且在Python中通过使用request和json包很容易发出带有JSON负载的HTTP请求。我正在努力了解如何发出在有效负载中包含protobuf消息的请求。我认为已经在互联网上进行了足够的搜索,但未获得任何明显的结果。有人经历过吗?她/他可以分享一些例子吗?

具体来说,我有一个message_pb实例化的protobuf消息对象(基于protobuf编译器生成的python代码),并填充了我的数据。

我尝试通过使用请求包发出PUT请求,如下所示:

requests.put(url, data=message_pb, header={'Content-Type': 'application/octet-stream'})
Run Code Online (Sandbox Code Playgroud)

这是我收到的回溯:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/local/lib/python3.5/dist-packages/requests/api.py", line 126, in put
    return request('put', url, data=data, **kwargs)
  File "/usr/local/lib/python3.5/dist-packages/requests/api.py", line 58, in request
    return session.request(method=method, url=url, **kwargs)
  File "/usr/local/lib/python3.5/dist-packages/requests/sessions.py", line 508, in request
    resp = self.send(prep, **send_kwargs)
  File "/usr/local/lib/python3.5/dist-packages/requests/sessions.py", line 618, in send
    r = adapter.send(request, **kwargs)
  File "/usr/local/lib/python3.5/dist-packages/requests/adapters.py", line 460, in send
    for i in request.body:
TypeError: 'ObjectStatistics' object is not …
Run Code Online (Sandbox Code Playgroud)

http protocol-buffers python-3.x

5
推荐指数
1
解决办法
1770
查看次数

标签 统计

http ×1

protocol-buffers ×1

python-3.x ×1