2

I am using python-3.7 and zeep to create a soap client for a web service.

I am able to hit the endpoint after a long struggle but I am not sure how to create request.xml for the service.

from requests import Session
from zeep import Client
from zeep.transports import Transport
import logging.config

logging.config.dictConfig({
    'version': 1,
    'formatters': {
        'verbose': {
            'format': '%(name)s: %(message)s'
        }
    },
    'handlers': {
        'console': {
            'level': 'DEBUG',
            'class': 'logging.StreamHandler',
            'formatter': 'verbose',
        },
    },
    'loggers': {
        'zeep.transports': {
            'level': 'DEBUG',
            'propagate': True,
            'handlers': ['console'],
        },
    }
})

session = Session()
session.cert = cert=('certificate.pem', 'plainkey.pem')
transport = Transport(session=session)
client = Client('https://www.soapclient.com:7851/SoapServices/SoapReportDetailsService',transport=transport)
result = client.service.service['SoapReportDetailsService']['SoapReportDetailsPoty'].GetReportDetails(
    reportName="usageByISBN")
print(result)

While executing the code, I am getting below exception,

zeep.transports: Loading remote data from 

    https://www.soapclient.com:7851/SoapServices/SoapReportDetailsService
    Traceback (most recent call last):
      File "sample.py", line 32, in <module>
        client = Client('https://www.soapclient.com:7851/SoapServices/SoapReportDetailsService',transport=transport)
      File "/usr/local/Cellar/python/3.7.0/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/zeep/client.py", line 62, in __init__
        wsdl, self.transport, settings=self.settings)
      File "/usr/local/Cellar/python/3.7.0/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/zeep/wsdl/wsdl.py", line 82, in __init__
        document = self._get_xml_document(location)
      File "/usr/local/Cellar/python/3.7.0/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/zeep/wsdl/wsdl.py", line 143, in _get_xml_document
        location, self.transport, self.location, settings=self.settings)
      File "/usr/local/Cellar/python/3.7.0/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/zeep/loader.py", line 74, in load_external
        content = transport.load(url)
      File "/usr/local/Cellar/python/3.7.0/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/zeep/transports.py", line 110, in load
        content = self._load_remote_data(url)
      File "/usr/local/Cellar/python/3.7.0/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/zeep/transports.py", line 127, in _load_remote_data
        response.raise_for_status()
      File "/usr/local/Cellar/python/3.7.0/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/requests/models.py", line 939, in raise_for_status
        raise HTTPError(http_error_msg, response=self)
    requests.exceptions.HTTPError: 500 Server Error: Internal Server Error for url: https://www.soapclient.com:7851/SoapServices/SoapReportDetailsService

But i am able to hit the same service via postman,sample curl for a reference,

curl -X POST -H "Content-Type: text/xml" -H "Cache-Control: no-cache" -H "Postman-Token: 9bc53d16-bc5c-d026-d720-830c25279950" -d '<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
    <SOAP-ENV:Header>
        <ns3:bookHeader xmlns:ns3="http://ws.soapclient.com/">
            <bookCredentials>
                <customerId>123</customerId>
                <password>123@45</password>
                <userId>3456</userId>
            </Credentials>
        </ns3:bookHeader>
    </SOAP-ENV:Header>
    <SOAP-ENV:Body>
        <ns3:getReportDetails xmlns:ns3="http://ws.soapClient.com/">
          <reportName>usageByISBN</reportName>
        </ns3:getReportDetails>
    </SOAP-ENV:Body>
</SOAP-ENV:Envelope>' "https://www.soapclient.com:7851/SoapServices/SoapReportDetailsService"

I am completely new to python. so i am not sure how to write a client using python.Any help would be appreciable.

VelNaga
  • 3,593
  • 6
  • 48
  • 82

0 Answers0