2017-01-14 16 views
0

私はpythonとxmlrpcでリクエストしたいと思います。python3でXMLRPCリクエストを送信

from xmlrpc.client import ServerProxy, datetime 
import ssl 
import hashlib 

hash_object = hashlib.md5(b'USER*PASSWORD') 

test = ServerProxy('https://IP/xml-rpc?de.vertico.starface.auth=%s' % hash_object.hexdigest(), 
          verbose=False, use_datetime=True, 
          context=ssl._create_unverified_context()) 
print(test.Queue.getHistoryData({"queueName" : "Hauptgruppe","from" : "20161230T12:59:05", "to" : "20170701T12:59:05"})) 

体はこのようにする必要があります:

<?xml version="1.0" encoding="UTF-8"?> 
<methodCall> 
    <methodName>Queue.getHistoryData</methodName> 
    <params> 
     <param> 
     <value> 
      <struct> 
       <member> 
        <name>queueName</name> 
        <value> 
        <string>testIq</string> 
        </value> 
       </member> 
       <member> 
        <name>from</name> 
        <value> 
        <string>20150701T12:59:05</string> 
        </value> 
       </member> 
       <member> 
        <name>to</name> 
        <value> 
        <string>20160701T12:59:05</string> 
        </value> 
       </member> 
      </struct> 
     </value> 
     </param> 
    </params> 
</methodCall> 

しかし、私は、結果として、次のエラーを取得しておきます。そして私はそれを修正する方法を知らない。誰か私に助けてもらえますか?

xmlrpc.client.Fault: <Fault 1: 'java.lang.ClassCastException : java.lang.String 
cannot be cast to java.util.Date'> 
+0

** fromと 'to 'の値は文字列であると想定されていますか?*と*は正しいですか? –

+0

ええ、私がここに投稿したボディはメーカーのwikiの例です。だから、Pythonコードは正しいですか? – Basti

+0

'use_datetime'フラグは廃止されました。 'use_builtin_types = True'フラグを使いたいとします。 –

答えて

0

エラーメッセージが表示された場合は、代わりに<dateTime.iso8601>タグを送信する必要があると思われます。 datetimeオブジェクトを送信してみてください:私は推奨されませんuse_builtin_typesuse_datetimeとして使用に切り替え

import datetime 

test = ServerProxy(
    'https://IP/xml-rpc?de.vertico.starface.auth=%s' % hash_object.hexdigest(), 
    verbose=False, use_builtin_types=True, 
    context=ssl._create_unverified_context()) 
print(test.Queue.getHistoryData({ 
    "queueName": "Hauptgruppe", 
    "from" : datetime.datetime(2016, 12, 30, 12, 59, 5), 
    "to": datetime.datetime(2017, 7, 1, 12, 59, 5)})) 

注意を。

関連する問題