我需要从 python 执行 http PUT 操作 哪些库已被证明支持这一点?更具体地说,我需要对密钥对执行 PUT,而不是文件上传。
我一直在尝试使用 restful_lib.py,但是我从我正在测试的 API 中得到了无效的结果。(我知道结果是无效的,因为我可以从命令行使用 curl 触发相同的请求并且它可以工作。)
参加 Pycon 2011 之后,我觉得 pycurl 可能是我的解决方案,所以我一直在尝试实现它。我这里有两个问题。首先,pycurl 将“PUT”重命名为“UPLOAD”,这似乎意味着它专注于文件上传而不是密钥对。其次,当我尝试使用它时,我似乎从未从 .perform() 步骤中获得回报。
这是我当前的代码:
import pycurl
import urllib
url='https://xxxxxx.com/xxx-rest'
UAM=pycurl.Curl()
def on_receive(data):
print data
arglist= [\
('username', 'testEmailAdd@test.com'),\
('email', 'testEmailAdd@test.com'),\
('username','testUserName'),\
('givenName','testFirstName'),\
('surname','testLastName')]
encodedarg=urllib.urlencode(arglist)
path2= url+"/user/"+"99b47002-56e5-4fe2-9802-9a760c9fb966"
UAM.setopt(pycurl.URL, path2)
UAM.setopt(pycurl.POSTFIELDS, encodedarg)
UAM.setopt(pycurl.SSL_VERIFYPEER, 0)
UAM.setopt(pycurl.UPLOAD, 1) #Set to "PUT"
UAM.setopt(pycurl.CONNECTTIMEOUT, 1)
UAM.setopt(pycurl.TIMEOUT, 2)
UAM.setopt(pycurl.WRITEFUNCTION, on_receive)
print "about to perform"
print UAM.perform()