14

我正在使用弹性搜索,RESTful API 支持在 GET 请求中读取正文以获取搜索条件。

我目前在做

response = urllib.request.urlopen(url, data).read().decode("utf-8")

如果data存在,则发出 POST,否则发出 GET。尽管我包含数据(根据 POST 应该在请求正文中),但我如何强制执行 GET

Nb:我知道我可以source在 Url 中使用一个属性,但是我们正在运行的查询很复杂,而且查询定义非常冗长,导致 url 非常长(长到足以干扰一些旧浏览器和代理)。

4

1 回答 1

23

我不知道使用 urllib的好方法。但是,requests通过使用requests.request * 函数使其变得微不足道(实际上,对于任何任意动词和请求内容都是微不足道的) :

requests.request(method='get', url='localhost/test', data='some data')

构建一个小型的测试web服务器会显示数据确实是在请求体中发送的,服务器感知到的方法确实是GET。

*请注意,我链接到requests.api.requests代码是因为这是实际函数定义所在的位置。你应该使用它来调用它requests.request(...)

于 2013-03-20T18:06:35.280 回答