2012-07-19 20 views
1

我正在嘗試通過一些代碼通過Python連接到merchantos.com的其餘API。針對merchantos.com API的Python代碼使用

有了一些研究,我已成功地獲得可以訪問工作,使用下面的urllib2代碼:

# 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請求。放置/發佈數據應該是定義對象更新的XML塊。例如,用一個塊(1代表帳戶號碼,2代表本例中的itemID)更新一個可以放入API/Account/1/Item/2的項目。

因此,舉例來說,我希望做一個PUT更新客戶ID = 2

我會提供數據參考的XML塊爲

<Customer> 
    ..contents omitted here... 
</Customer> 

而且,我來點它到URL

我這裏面臨的問題是..

  • 我不知道在哪裏/如何改變方法把
  • 我需要頂級知道如何附上我的數據塊,並張貼

因此,有人可以告訴我怎麼去適應上面的代碼爲GET做出PUT ..還有一個POST(創建一個新的記錄)

感謝,提前,對於任何助理名稱在這方面。

Scott。

+0

相關http://stackoverflow.com/questions/111945/is-there-any-way-to-do-http-put -in-蟒蛇 – jfs 2012-07-19 22:40:07

回答

0

您可以嘗試cURL而不是urllib。捲曲是非常靈活,滿足您的需求:

http://pycurl.sourceforge.net/

這裏有兩個你可以捲曲設置的選項:

CURLOPT_POST:參數設置爲1,告訴庫做一個普通的HTTP後... CURLOPT_POSTFIELDS:要在HTTP POST操作中發佈的完整數據...