1

我正在尝试通过一些代码来通过 Python 连接到 Merceros.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(用于创建新记录)

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

斯科特。

4

1 回答 1

0

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

http://pycurl.sourceforge.net/

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

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

于 2012-07-26T04:23:02.527 回答