我正在使用elasticsearch,RESTful API支持在搜索条件的GET请求中支持读取主体。
我正在做
response = urllib.request.urlopen(url, data).read().decode("utf-8")
如果存在data
,则会发出POST,否则发出GET。尽管事实上我包含了数据(根据POST要求在请求体中),我如何强制获取GET
Nb:我知道我可以在Url中使用source
属性,但我们运行的查询很复杂,查询定义非常详细,导致查询时间过长。
答案 0 :(得分:12)
我不知道使用urllib执行此操作的 nice 方法。但是,requests使用requests.request *函数使其变得微不足道(实际上,对于任意动词和请求内容都是微不足道的):
requests.request(method='get', url='localhost/test', data='some data')
构建一个小型测试Web服务器将显示数据确实是在请求正文中发送的,并且服务器感知的方法确实是GET。
*请注意我链接到requests.api.requests
代码,因为这是实际函数定义所在的位置。您应该使用requests.request(...)