用于merchantos.com API的Python代码

时间:2012-07-19 22:32:45

标签: python urllib2

我正在尝试通过一些代码来通过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

我面临的问题是......

  • 我不知道在哪里/如何将方法更改为PUT
  • 我需要知道如何附加我的数据块并发布

那么,有人可以告诉我如何使上述代码适应GET以进行PUT ..以及POST(用于创建新记录)

提前感谢您在这方面的任何帮助。

斯科特。

1 个答案:

答案 0 :(得分:0)

您可以尝试使用cURL而不是urllib。 cURL非常灵活,可满足您的需求:

http://pycurl.sourceforge.net/

以下是您可以使用cURL设置的两个选项:

CURLOPT_POST:设置为1的参数告诉库执行常规HTTP发布... CURLOPT_POSTFIELDS:要在HTTP POST操作中发布的完整数据...