Jom*_*ner 5 http protocol-buffers python-3.x
我有一项服务,该服务公开了两个交换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 iterable
Run Code Online (Sandbox Code Playgroud)
小智 6
扎伊采夫·德米特里的评论似乎对我有用。
resp = requests.put(url, headers={'Content-Type': 'application/protobuf'}, data=message_pb.SerializeToString())
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1770 次 |
| 最近记录: |