Guest User

Untitled

a guest
Nov 18th, 2017
87
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.84 KB | None | 0 0
  1. print client.last_received().getChild("soap:Envelope").getChild("soap:Header")
  2. .getChild("ResponseHeader").getChild("resultCode").getText()
  3.  
  4. from suds.plugin import MessagePlugin
  5.  
  6. class HeaderPlugin(MessagePlugin):
  7. def __init__(self):
  8. self.document = None
  9.  
  10. def parsed(self, context):
  11. self.document = context.reply
  12.  
  13. def get_headers(self, method):
  14. method = method.method
  15. binding = method.binding.output
  16. rtypes = binding.headpart_types(method, False)
  17.  
  18. envns = ('SOAP-ENV', 'http://schemas.xmlsoap.org/soap/envelope/')
  19. soapenv = self.document.getChild('Envelope', envns)
  20. soapheaders = soapenv.getChild('Header', envns)
  21. nodes = soapheaders.children
  22. if len(nodes):
  23. resolved = rtypes[0].resolve(nobuiltin=True)
  24. return binding.unmarshaller().process(nodes[0], resolved)
  25. return None
  26.  
  27. from suds.client import Client
  28.  
  29. hp = HeaderPlugin()
  30. client = Client(wsdl, plugins=[hp])
  31.  
  32. response = client.service.LoremIpsum()
  33. headers = hp.get_headers(client.service.LoremIpsum)
  34.  
  35. >>> headers
  36. (AuthenticationResponseHeader){
  37. sessionKey = "a631cd00-c6be-416f-9bd3-dbcd322e0848"
  38. validUntil = 2030-01-01 01:01:01.123456+01:00
  39. }
  40. >>> headers.validUntil
  41. datetime.datetime(2030, 1, 1, 1, 1, 1, 123456, tzinfo=<suds.sax.date.FixedOffsetTimezone object at 0x7f7347856be0>)
  42.  
  43. class HeaderPlugin(MessagePlugin):
  44. def __init__(self):
  45. self.document = None
  46.  
  47. def parsed(self, context):
  48. self.document = context.reply
  49.  
  50. def get_headers(self, method):
  51. Result = {} #Soap Header list
  52. method = method.method
  53. binding = method.binding.output
  54. SHeaderElem = binding.headpart_types(method, False)
  55.  
  56. envns = ('SOAP-ENV', 'http://schemas.xmlsoap.org/soap/envelope/')
  57. soapenv = self.document.getChild('Envelope', envns)
  58. soapheaders = soapenv.getChild('Header', envns)
  59. SHeaderNodes = soapheaders.children
  60.  
  61. for Elem in SHeaderElem:
  62. for Node in SHeaderNodes:
  63. if(Node.name == Elem.name):
  64. ElemRes = Elem.resolve(nobuiltin=True)
  65. NodeRes = binding.unmarshaller().process(Node, ElemRes)
  66. Result[Elem.name] = NodeRes
  67. return Result
  68. #
  69.  
  70. <soap-env:Envelope xmlns:eb="http://www.ebxml.org/namespaces/messageHeader" xmlns:soap-env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:wsse="http://schemas.xmlsoap.org/ws/2002/12/secext">
  71. <soap-env:Header>
  72. <eb:MessageHeader eb:version="1.0" soap-env:mustUnderstand="1">
  73. <!-- -->
  74. </eb:MessageHeader>
  75. <wsse:Security>
  76. <!-- -->
  77. </wsse:Security>
  78. </soap-env:Header>
  79. <soap-env:Body>
  80. <!-- -->
  81. </soap-env:Body>
  82. </soap-env:Envelope>
  83.  
  84. SoapHeadersResp = {'MessageHeader':MessageHeader, 'Security':SecurityObj}
Add Comment
Please, Sign In to add comment