1

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 ブロックである必要があります。たとえば、Item を更新するには、ブロックを使用して API/Account/1/Item/2 に PUT します (この例では、1 はアカウント番号、2 は itemID です)。

したがって、たとえば、顧客 ID = 2 を更新するために PUT を実行したい

XML ブロックへのデータ参照を提供します。

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

そして、それをURLに向けます。

私がここで直面している問題は..

  • メソッドを PUT に変更する場所/方法がわかりません
  • データブロックを添付して投稿する方法を知っておく必要があります

それで、誰かが上記のコードを GET に適合させて PUT .. と POST (新しいレコードを作成するため) を作成する方法を教えてください。

この点に関してご支援いただきありがとうございます。

スコット。

4

1 に答える 1

0

urllibの代わりにcURLを試してみてください。cURLは非常に柔軟性があり、ニーズに対応します。

http://pycurl.sourceforge.net/

cURLで設定できる2つのオプションは次のとおりです。

CURLOPT_POST:パラメータを1に設定すると、ライブラリに通常のHTTPPOSTを実行するように指示されます...CURLOPT_POSTFIELDS:HTTPPOST操作で投稿する完全なデータ...

于 2012-07-26T04:23:02.527 に答える