Nuovo nella versione 2.2.
XML-RPC è un metodo per Chiamate a Procedure Remote che utilizza come trasporto l'XML trasferito via HTTP. Con questo metodo, un client può chiamare metodi con parametri su server remoti (il server viene indicato da una URI) e gli vengono restituiti dei dati strutturati. Questo modulo supporta la scrittura di codice client XML-RPC; gestisce tutti i dettagli sulla traduzione tra oggetti Python conformi e XML durante le operazioni.
uri[, transport[, encoding[, verbose[, allow_none]]]]) |
None
verrà tradotta in XML; il comportamento
predefinito per None
è il sollevamento di un'eccezione
TypeError. Questa è un'estensione comunemente usata per
la specifica XML-RPC, ma non viene supportata da tutti i client e da
tutti server; vedere http://ontosys.com/xml-rpc/extensions.htmlper una descrizione.
Entrambe le modalità di trasporto, HTTP ed HTTPS, supportano le
estensioni della sintassi del'URL per l'autenticazione di base HTTP:
http://user:pass@host:port/path
. La porzione user:pass
viene codificata in base64 come un'intestazione HTTP `Authorization',
ed inviata al server remoto come parte del processo di connessione
quando si richiama un metodo XML-RPC. Si ha bisogno di usare questo
meccanismo solo quando il server remoto richiede una autenticazione di
base con utente e password.
L'istanza restituita è un oggetto proxy con metodi che possono essere usati per invocare le corrispondenti chiamate RPC sul server remoto. Se il server remoto supporta l'API per l'introspezione, il proxy può essere usato anche per richiedere al server remoto quali metodi supporta (NdT: scoperta servizi - service discovery) ed analizzare altri metadata associati al server.
I metodi dell'istanza ServerProxy utilizzano come argomenti tipi base di Python ed oggetti, e restituiscono tipi base di Python e classi. I tipi si conformano (per esempio possono essere serializzati attraverso XML), inclusi i seguenti (ed eccetto dove indicato, vengono deserializzati come alcuni tipi di Python):
Nome | Significato |
---|---|
boolean | Le costanti True e False |
integers | Passati direttamente |
floating-point numbers | Passati direttamente |
strings | Passati direttamente |
arrays | Ogni tipo di sequenza Python contenente elementi conformabili. Gli Array vengono restituiti come liste |
structures | Un dizionario Python. La chiave deve essere una stringa, il valore può essere qualsiasi tipo conformabile |
dates | in secondi a partire da epoch; passa in un'istanza della classe wrapper DateTime |
binary data | passa in un'istanza della classe wrapper Binary |
Questo è l'intero insieme dei tipi di dati supportati da XML-RPC. Chiamate di metodi possono anche sollevare una speciale istanza di Fault, usata per segnalare errori a server XML-RPC, o ProtocolError usato per segnalare un errore nello strato di trasporto HTTP/HTTPS. Fare attenzione che a partire da Python 2.2 si possono derivare tipi built-in, e che il modulo xmlrpclib non supporta attualmente la serializzazione di istanze di queste sotto classi.
Quando si passa una stringa, caratteri speciali per XML come "<", ">" e "&" sono automaticamente preceduti dal carattere di protezione (NdT: la barra rovesciata). Comunque è nella responsabilità del chiamante sincerarsi che la stringa sia priva di caratteri non consentiti in XML, come i caratteri di controllo ASCII che vanno dal valore 0 al 31; ignorando questo particolare si ottengono richieste XML-RPC che non sono ben formate per XML. Se si devono passare stringhe arbitrarie attraverso XML-RPC, usare la classe wrapper Binary descritta sotto.
Server è considerato come un alias per ServerProxy per compatibiltà con il passato. Il nuovo codice dovrebbe usare ServerProxy.
Vedete anche: