XMLRPC呼び出しを受け入れるWS(ZOPE/PLONE)があります。XML-RPCメッセージ形式の問題
私はWSへの呼び出しを行い、何かするためのコードのPythonスニペットを書いています。
私はhereを見つけmessaggeフォーマットに従ってください、そしてそれは、コードの私の抜粋です:
import httplib
def queryInventory():
try:
xmlrpc_envelope = '<?xml version="1.0"?>'\
'<methodCall>'\
'<methodName>easyram</methodName>'\
'<params>'\
'<param>'\
'<value>%s</value>'\
'</param>'\
'</params>'\
'</methodCall>'
params = '<EasyRAM>'\
'<authentication><user>EasyRAM</user><pwd>EasyRAM</pwd><hotel>52</hotel></authentication>'\
'<operation type="QueryInventory" rate="master"><date from="2012-03-10" to="2012-03-10" /><date from="2012-03-22" to="2012-03-22" /></operation>'\
'</EasyRAM>'
data = xmlrpc_envelope % params
print data
headers = {"Content-type": "text/xml"}
conn = httplib.HTTPSConnection('myHost')
aa = '/ws/xmlrpc/public/EasyRAM'
conn.request("POST", aa, data, headers)
response = conn.getresponse()
print "EasyRAM.queryInventory() response: status=%s, reason=%s" % (response.status, response.reason)
print "EasyRAM.queryInventory() response=%s" % response.read()
conn.close()
except Exception, ss:
print "EasyRAM.queryInventory() -> Error=%s" % ss
raise
return ''
queryInventory()
問題は、私は次のエラーメッセージが表示されることである:
無効なリクエストパラメータ、のparamsをは、要求から省略されました。すべての必須パラメーターを指定して、要求を再試行してください。
このようなパラメータは渡されません。
私はそのように<string></string>
に(params
と呼ばれる)私のパラメータをラップすることによって、私のスニペットを変更する場合:
xmlrpc_envelope = '<?xml version="1.0"?>'\
'<methodCall>'\
'<methodName>easyram</methodName>'\
'<params>'\
'<param>'\
'<value><string>%s</string></value>'\
'</param>'\
'</params>'\
'</methodCall>'
何かが起こるが、私が欲しいものではありません。実際には私のパラメータの結果は空になります(または好きな場合は無効です)。
アイデアや提案はありますか?
PSは:私はそれがxmlrpclibと呼ばれるPython用XML-RPCライブラリーが存在する知っているが、これは直接その
のようなライブラリを使用することはできませんクライアントの一例ですので、私は、そのように開発する必要があります