使用 python 开发 Web Service
2008-09-30 13:03:38 来源:WEB开发网调用返回值对象 rsp 的 set_element_xxx() 方法,就可以对返回值对象中的元素进行赋值。这个方法是由 wsdl2py 的 -b 选项生成的。
set_element_timeStr(ctime()) 将返回值的 timeStr 元素赋值为代表当前时间的字符串。
sayHello() 的代码与此类似。但是与 getTime 不同,sayHello 服务还需要处理客户端调用时传入的入口参数。sayHello 方法的源代码:
def soap_sayHello(self,ps):
try:
rsp = myServices.soap_sayHello(self,ps)
request = self.request
usrName = request.get_element_userName()
rsp.set_element_helloStr("Hello "+usrName)
except Exception, e:
print str(e)
return rsp
request 代表入口参数对象。对于 sayHello 服务,入口参数只有一个元素 userName。调用 request 对象的 get_element_userName() 方法就可以得到该元素的值。
调用返回值对象 rsp 的 set_element_helloStr 将返回字符串赋值给 helloStr 元素。
showUser 服务与前面两个服务的不同在于返回值是一个复杂对象,该复杂对象在 python 中可以用下面这个类来表示:
class userInfo:
def __init__(self,nm,gen,addr):
self.name = nm
self.gender = gen
self.address = addr
showUser 服务根据客户端传入的用户名在数据库中查找该用户的详细信息并填充 userInfo 对象,相应代码如下:
def soap_showUser(self,ps):
try:
rsp = myServices.soap_showUser(self,ps)
request = self.request
uName = request.get_element_userName()
userDetail = rsp.new_user()
nm=self.users[uName].name
userDetail.set_element_name(nm)
gender=self.users[uName].gender
userDetail.set_element_gender(gender)
addr=self.users[uName].address
userDetail.set_element_address(addr)
rsp.set_element_user(userDetail)
except Exception, e:
print str(e)
return rsp
更多精彩
赞助商链接