第十二章:互联网-xmlrpc.client:XML-RPC的客户库-数据类型

本文探讨了XML-RPC协议支持的数据类型,包括布尔值、整数、浮点数、字符串、日期时间、数组和结构体。通过Python示例代码展示了如何使用xmlrpc.client模块与服务器交互,以及不同类型数据的传递和转换。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

12.10.2 数据类型
XML-RPC协议能够识别一组有限的常用数据类型。这些类型可以作为参数或返回值传递,还可以结合使用来创建更复杂的数据结构。

import xmlrpc.client
import datetime

server = xmlrpc.client.ServerProxy('http://localhost:9000')

data = [
    ('boolean',True),
    ('integer',1),
    ('float',2.5),
    ('string','some text'),
    ('datetime',datetime.datetime.now()),
    ('array',['a','list']),
    ('array',('a','tuple')),
    ('structure',{'a':'dictionart'}),
    ]

for t,v in data:
    as_string,type_name,value = server.show_type(v)
    print('{:<12}:{}'.format(t,as_string))
    print('{:12}  {}'.format('',type_name))
    print('{:12}  {}'.format('',value))

下面给出简单类型:
在这里插入图片描述
可以嵌套支持的类型来创建任意复杂的值。

import xmlrpc.client
import datetime
import pprint

server = xmlrpc.client.ServerProxy('http://localhost:9000')

data = {
    'boolean':True,
    'integer':1,
    'float-point number':2.5,
    'string':'some text',
    'datetime':datetime.datetime.now(),
    'array':['a','list'],
    'array':('a','tuple'),
    'strucure':{'a':'dictionary'},
    }

arg = []
for i in range(3):
    d = {}
    d.update(data)
    d['integer'] = i
    arg.append(d)

print('Before:')
pprint.pprint(arg,width=40)

print('\nAfter:')
pprint.pprint(server.show_type(arg)[-1],width=40)

这个程序向示例服务器传递一个字典列表,其中包含支持的所有类型,由示例服务器返回数据。元组会转换为列表,datetime实例转换为DateTime对象。否则,其他数据不变。
运行结果:
在这里插入图片描述
XML-RPC支持日期作为一个内置类型,xmlrpclib可以使用两个类在发出代理中或者从服务器接收日期时表示日期值。

import xmlrpc.client

server = xmlrpc.client.ServerProxy('http://localhost:9000',
                                   use_datetime=True)
now = server.now()
print('With:',now,type(now),now.__class__.__name__)

server = xmlrpc.client.ServerProxy('http://localhost:9000',
                                   use_datetime=False)
now = server.now()
print('Without:',now,type(now),now.__class__.__name__)

默认地,会使用DateTime的一个内部版本,不过如果设置了use_datetime选项,则会打开datetime支持,使用datetime模块中的类。
运行结果:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值