python soap 肥皂模块得到结果
python soap zeep module get result
我从 SOAP API 得到这样的结果:
client = zeep.Client(wsdl=self.wsdl, transport=transport)
auth_header = lb.E("authenticate", self.login())
res = client.service.GetHouseProfile(region_id, page_number, reporting_period_id, _soapheaders=[auth_header])
现在我需要解析 res 并得到结果。
>>> dir(res)
['__class__', '__contains__', '__deepcopy__', '__delattr__', '__delitem__', '__dict__', '__doc__', '__eq__', '__format__', '__getattribute__', '__getitem__', '__hash__', '__init__', '__iter__', '__len__', '__module__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', '__values__', '__weakref__', '_xsd_type']
>>> type(res)
<class 'zeep.objects.GetHouseProfileSFResponse'>
>>> print(res.__str__()[0:100])
{
'data': {
'item': [
{
'house_id': 6465882L,
如何从res中获取某个元素?
所以我找到了路。看起来不是一个标准的决定,但它有效:
>>> res.__values__.get("data").__values__.get("item")[6].__values__.keys()
[u'house_id', u'house_profile_data', u'full_address', u'stage', u'state', u'emergency_date', u'emergency_number', u'emergency_reason', u'emergency_after', u'inn', u'files_info']
import zeep
#import json
a = zeep.helpers.serialize_object(res)
#json_object_a = json.loads(json.dumps(a))
print a['data']['item'][0]['house_id']
__values__
属性是私有实现细节,您不应该真正使用它。你应该能够做 response.data.item[0].house_id 或 response['data']['item'][0]['house_id'].
有关使用的代码,请参阅 https://github.com/mvantellingen/python-zeep/blob/master/src/zeep/xsd/valueobjects.py#L32。
干杯,迈克尔(zeep 的作者)
我从 SOAP API 得到这样的结果:
client = zeep.Client(wsdl=self.wsdl, transport=transport)
auth_header = lb.E("authenticate", self.login())
res = client.service.GetHouseProfile(region_id, page_number, reporting_period_id, _soapheaders=[auth_header])
现在我需要解析 res 并得到结果。
>>> dir(res)
['__class__', '__contains__', '__deepcopy__', '__delattr__', '__delitem__', '__dict__', '__doc__', '__eq__', '__format__', '__getattribute__', '__getitem__', '__hash__', '__init__', '__iter__', '__len__', '__module__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', '__values__', '__weakref__', '_xsd_type']
>>> type(res)
<class 'zeep.objects.GetHouseProfileSFResponse'>
>>> print(res.__str__()[0:100])
{
'data': {
'item': [
{
'house_id': 6465882L,
如何从res中获取某个元素?
所以我找到了路。看起来不是一个标准的决定,但它有效:
>>> res.__values__.get("data").__values__.get("item")[6].__values__.keys()
[u'house_id', u'house_profile_data', u'full_address', u'stage', u'state', u'emergency_date', u'emergency_number', u'emergency_reason', u'emergency_after', u'inn', u'files_info']
import zeep
#import json
a = zeep.helpers.serialize_object(res)
#json_object_a = json.loads(json.dumps(a))
print a['data']['item'][0]['house_id']
__values__
属性是私有实现细节,您不应该真正使用它。你应该能够做 response.data.item[0].house_id 或 response['data']['item'][0]['house_id'].
有关使用的代码,请参阅 https://github.com/mvantellingen/python-zeep/blob/master/src/zeep/xsd/valueobjects.py#L32。
干杯,迈克尔(zeep 的作者)