在Python上发送命名参数的REST GET请求

时间:2014-08-04 16:51:40

标签: python rest urllib2

我在Linux中使用curl在Linux中玩,但现在我需要将我的脚本移动到python以便更有效。 在python上执行以下行的最佳方法是什么?

curl baseuri:port/resource -u user:pswd

我已经玩了urllib2,但我不知道如何发送“-u user:pswd”

2 个答案:

答案 0 :(得分:3)

您需要使用HTTPPasswordMgrWithDefaultRealm instance来处理身份验证,并添加HTTPBasicAuthHandler handler以响应身份验证质询:

import urllib2

url = 'baseuri:port/resource'
username = 'user'
password = 'pswd'

pwmgr = urllib2.HTTPPasswordMgrWithDefaultRealm()
pwmgr.add_password(None, url, username, password)    
authhandler = urllib2.HTTPBasicAuthHandler(passman)

opener = urllib2.build_opener(authhandler)
response = opener.open(theurl)

是的,这是少数。

如果您可以安装第三方库,则添加使用requests library;它会变得如此简单:

import requests

url = 'baseuri:port/resource'
username = 'user'
password = 'pswd'

response = requests.get(url, auth=(username, password))

答案 1 :(得分:0)

实际上,我们使用的是pycurl,它也可以很好地运行。这是从请求中获取json的示例:

    import pycurl
    import json
    from io import BytesIO

    data = BytesIO()
    pyCurl = pycurl.Curl()
    pyCurl.setopt(pyCurlClass.URL,string_http)
    pyCurl.setopt(pycurl.USERPWD, 'user:password')
    pycurl.setopt(c.WRITEFUNCTION, data.write)
    pyCurl.perform()

    dictionary = json.loads(data.getvalue())