Ich bin neu in Python und xmlrpc, und ich bin fest mit binären Daten Decodierung von einem öffentlichen Dienst kommen:dekodieren binär aus xmlrpc Python
der Service Request-Response mit diesem Code ist:
from xmlrpc.client import Server
import xmlrpc.client
from pprint import pprint
DEV_KEY = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxx'
logFile = open('stat.txt', 'w')
s1 = Server('http://muovi.roma.it/ws/xml/autenticazione/1')
s2 = Server('http://muovi.roma.it/ws/xml/paline/7')
token = s1.autenticazione.Accedi(DEV_KEY, '')
res = s2.paline.GetStatPassaggi(token)
pprint(res, logFile)
Antwort:
{'id_richiesta': '257a369dbf46e41ba275f8c821c7e1e0',
'risposta': {'periodi_aggregazione': <xmlrpc.client.Binary object at 0x0000027B7D6E2588>,
'tempi_attesa_percorsi': <xmlrpc.client.Binary object at 0x0000027B7D9276D8>}}
ich diese zwei binäre Objekte entschlüsseln müssen, und ich bin mit diesem Code fest:
from xmlrpc.client import Server
import xmlrpc.client
from pprint import pprint
DEV_KEY = 'xxxxxxxxxxxxxxxxxxxxxxxx'
logFile = open('stat.txt', 'w')
s1 = Server('http://muovi.roma.it/ws/xml/autenticazione/1')
s2 = Server('http://muovi.roma.it/ws/xml/paline/7')
token = s1.autenticazione.Accedi(DEV_KEY, '')
res = s2.paline.GetStatPassaggi(token)
dat = xmlrpc.client.Binary(res)
out = xmlrpc.client.Binary.decode(dat)
pprint(out, logFile)
, die in endet:
Traceback (most recent call last): File "stat.py", line 18, in dat = xmlrpc.client.Binary(res) File "C:\Users\Leonardo\AppData\Local\Programs\Python\Python35\lib\xmlrpc\client.py", line 389, in init data.class.name) TypeError: expected bytes or bytearray, not dict
Der einzige doc ich für xmlrpc.client gefunden ist derjenige, bei docs.python.org, aber ich kann nicht herausfinden, wie ich diese Binärdateien entschlüsseln könnte
Es scheint, als ob Sie den richtigen Anruf tätigen, vielleicht ist das Problem auf der Website? 'TypeError: erwartete Bytes oder Bytearray, nicht dict'? Ich würde denken, dass Sie tatsächlich einen 'statt eines' Bytearrays 'erhalten. – NeoVe
Ja, ich denke, es ist ein Diktat. Ich werde versuchen, den Website-Entwickler zu kontaktieren – Forzaferrarileo