我想知道如何将以下 Curl 命令转换为 Python:
curl -G -H "Accept: application/json" ' http://mydomain.com:8080/experimental/events ' --data-urlencode 'query=["=", "certname", "myserver"]'
我尝试了以下 2 个选项(1:使用 httlib 和 2:使用 urllib2):
选项 1:使用 httlib
import httplib, urllib
connection = httplib.HTTPConnection('mydomain.com', 8080)
headers = {'Content-type': 'application/json'}
values = {"query": "['=', 'certname', 'myserver']"}
data = urllib.urlencode(values)
connection.request('POST', '/experimental/events', data, headers)
response = connection.getresponse()
它不起作用,但如果我做一个没有数据(urlencode)的简单请求,例如 connection.request('POST', '/facts/myserver', None, headers)
注释:'/experimental/events' 需要 --data-urlencode 但 '/facts/myserver' 不需要 --data-urlencode
选项 2:使用 urllib2
import urllib2, urllib
values = {"query": "['=', 'certname', 'myserver']"}
data = urllib.urlencode(values)
url_path = "http://mydomain.com:8080/experimental/events"
server_request = urllib2.Request(url_path, data)
server_request.add_header('Content-type', 'Accept: application/json')
server_response = urllib2.urlopen(server_request)
它不起作用,但再次,如果我做一个没有数据(urlencode)的简单请求,例如 url_path =“ http://mydomain.com:8080/facts/myserver ”然后 server_request = urllib2.Request(url_path)
注释:'/experimental/events' 需要 --data-urlencode 但 '/facts/myserver' 不需要 --data-urlencode
我被这种类型卡住了 --data-urlencode 'query=["=", "certname", "myserver"]'
任何帮助是极大的赞赏!