2017-01-14 3 views
0

Я хочу сделать запрос с помощью python и xmlrpc.Отправка запроса XMLRPC с помощью python3

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

Да, тело, которое я разместил здесь, является примером из вики-изготовителей. Итак, код python верен? – Basti

+0

Обратите внимание, что флаг 'use_datetime' устарел; вы хотите использовать флаг 'use_builtin_types = True'. –

ответ

0

Учитывая сообщение об ошибке, я подозреваю, что вам нужно отправить <dateTime.iso8601> теги вместо этого. Попробуйте отправить 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)})) 

Обратите внимание, что я перешел к использованию в качестве use_builtin_typesuse_datetime осуждается.

Смежные вопросы