我正在尝试通过一些代码来通过Python连接到merchantos.com的其余API。
通过一些研究,我设法使用以下urllib2代码使GET访问工作正常:
# NOTE: This api key has been made bogus
lcMOS_APIKey = '07203c82fab495xxxxxxxxxxxxxxxxxxxc2a499c'
# also bogus...
lcMOS_Acct = '98765'
lcBaseURL = 'https://api.merchantos.com/API/Account/' + lcMOS_Acct + '/'
# create a password manager
password_mgr = urllib2.HTTPPasswordMgrWithDefaultRealm()
password_mgr.add_password(None, lcBaseURL, lcMOS_APIKey, 'apikey')
# create "opener" (OpenerDirector instance)
handler = urllib2.HTTPBasicAuthHandler(password_mgr)
opener = urllib2.build_opener(handler)
urllib2.install_opener(opener)
# use the opener to fetch a URL
#loReturn = opener.open(lcBaseURL + lcURLEnd)
loReturn = opener.open(lcBaseURL + 'Customer.xml?firstName=Alex')
lcResponse = loReturn.read()
所以,上面成功地将数据拉回来了。我得到了客户记录的XML。
现在,我需要做的是更改方法,以便我可以执行PUT(用于更新)和POST(用于创建/新建)。
MerchantOS需要以下内容进行更新:
UPDATE / HTTP PUT 要更新现有记录/对象,请执行HTTP PUT请求。 put / post数据应该是定义对象更新的XML块。例如,要更新项目,您将使用块PUT到API / Account / 1 / Item / 2(1是帐号,2是本例中的itemID)。
因此,例如,我想做一个PUT来更新客户ID = 2
我会为
的XML块提供数据引用<Customer>
..contents omitted here...
</Customer>
而且,我要将其指向URL。
我面临的问题是......
那么,有人可以告诉我如何使上述代码适应GET以进行PUT ..以及POST(用于创建新记录)
提前感谢您在这方面的任何帮助。
斯科特。
答案 0 :(得分:0)
您可以尝试使用cURL而不是urllib。 cURL非常灵活,可满足您的需求:
http://pycurl.sourceforge.net/
以下是您可以使用cURL设置的两个选项:
CURLOPT_POST:设置为1的参数告诉库执行常规HTTP发布... CURLOPT_POSTFIELDS:要在HTTP POST操作中发布的完整数据...