Skip to main content
 首页 » 编程设计

python soap zeep模块得到结果

2025年05月04日22yyy_WW

我从这样的 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']