发送带有正文的GET请求

Bas*_*sic 9 python python-3.x

我正在使用elasticsearch,RESTful API支持在搜索条件的GET请求中支持读取主体.

我现在正在做

response = urllib.request.urlopen(url, data).read().decode("utf-8")
Run Code Online (Sandbox Code Playgroud)

如果data存在,则发出POST,否则发出GET.尽管我包含数据(根据POST应该在请求体中),我怎么能强制GET

Nb:我知道我可以source在Url中使用一个属性,但我们运行的查询很复杂,查询定义非常冗长,导致查询非常长.

Nis*_*n.H 13

我不知道使用urllib做这个的方法.但是,通过使用requests.request*函数,请求使得它变得微不足道(事实上,任何动词和请求内容都是微不足道的):

requests.request(method='get', url='localhost/test', data='some data')
Run Code Online (Sandbox Code Playgroud)

构建一个小的测试Web服务器将显示数据确实在请求的主体中发送,并且服务器感知的方法确实是GET.

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