2

I was integrating bsestar mf soap api's with django. So in order to consume soap apis i have use python package called zeep. but after creating its client on its end point and after that whenever i try to run soap functions it says 404 error. my code :

import zeep
def soap_set_wsa_headers(method_url, svc_url):
    header = zeep.xsd.Element(
        "Header",
        zeep.xsd.ComplexType(
            [
                zeep.xsd.Element(
                    "{http://www.w3.org/2005/08/addressing}Action", zeep.xsd.String()
                ),
                zeep.xsd.Element(
                    "{http://www.w3.org/2005/08/addressing}To", zeep.xsd.String()
                ),
            ]
        ),
    )
    header_value = header(Action=method_url, To=svc_url)
    return header_value
WSDL_ORDER_URL = [
    'https://bsestarmfdemo.bseindia.com/MFOrderEntry/MFOrder.svc?singleWsdl', 
    'https://www.bsestarmf.in/MFOrderEntry/MFOrder.svc?singleWsdl'
]
SVC_ORDER_URL = [
    'https://bsestarmfdemo.bseindia.com/MFOrderEntry/MFOrder.svc', 
    'https://www.bsestarmf.in/MFOrderEntry/MFOrder.svc'
]
METHOD_ORDER_URL = [
    'https://bsestarmfdemo.bseindia.com/MFOrderEntry/',
    'https://bsestarmf.in/MFOrderEntry/'
]
WSDL_UPLOAD_URL = [
    'https://bsestarmfdemo.bseindia.com/MFUploadService/MFUploadService.svc?singleWsdl', 
    'https://www.bsestarmf.in/StarMFWebService/StarMFWebService.svc?singleWsdl'
]
SVC_UPLOAD_URL = [
    'https://bsestarmfdemo.bseindia.com/MFUploadService/MFUploadService.svc/Basic', 
    'https://www.bsestarmf.in/StarMFWebService/StarMFWebService.svc/Basic'
]
METHOD_UPLOAD_URL = [
    'https://bsestarmfdemo.bseindia.com/2016/01/IMFUploadService/',
    'https://www.bsestarmf.in/2016/01/IStarMFWebService/'
]
client = zeep.Client(wsdl=WSDL_ORDER_URL[0])
method_url = METHOD_UPLOAD_URL[0] + 'getPassword'
svc_url = SVC_UPLOAD_URL[0]
header_value=soap_set_wsa_headers(method_url,svc_url)
client.service.getPassword(UserId='3081801', 
        Password='Abc4231', 
        PassKey='anything', 
        _soapheaders=[header_value])

Error while calling getPassword function:

zeep.transports: HTTP Post to 

https://bsestarmfdemo.bseindia.com/MFOrderEntry/MFOrder.svc:
<?xml version='1.0' encoding='utf-8'?>
<soap-env:Envelope xmlns:soap-env="http://www.w3.org/2003/05/soap-envelope"><soap-env:Header xmlns:wsa="http://www.w3.org/2005/08/addressing"><Header><wsa:Action>https://bsestarmfdemo.bseindia.com/2016/01/IMFUploadService/getPassword</wsa:Action><wsa:To>https://bsestarmfdemo.bseindia.com/MFUploadService/MFUploadService.svc/Basic</wsa:To></Header><wsa:Action>http://bsestarmf.in/MFOrderEntry/getPassword</wsa:Action><wsa:MessageID>urn:uuid:953b29c6-a2a0-48a0-aef0-5d4f1547b39a</wsa:MessageID><wsa:To>https://bsestarmfdemo.bseindia.com/MFOrderEntry/MFOrder.svc</wsa:To></soap-env:Header><soap-env:Body><ns0:getPassword xmlns:ns0="http://bsestarmf.in/"><ns0:UserId>3081801</ns0:UserId><ns0:Password>Abc4231</ns0:Password><ns0:PassKey>kuchbhi</ns0:PassKey></ns0:getPassword></soap-env:Body></soap-env:Envelope>
zeep.transports: HTTP Response from https://bsestarmfdemo.bseindia.com/MFOrderEntry/MFOrder.svc (status: 404):

---------------------------------------------------------------------------
TransportError                            Traceback (most recent call last)
<ipython-input-64-b5411107d6e5> in <module>
----> 1 client.service.getPassword(UserId='3081801', 
      2                 Password='Abc4231',
      3                 PassKey='kuchbhi',
      4         _soapheaders=[header_value])

/opt/anaconda3/lib/python3.8/site-packages/zeep/proxy.py in __call__(self, *args, **kwargs)
     44             kwargs["_soapheaders"] = soap_headers
     45 
---> 46         return self._proxy._binding.send(
     47             self._proxy._client,
     48             self._proxy._binding_options,

/opt/anaconda3/lib/python3.8/site-packages/zeep/wsdl/bindings/soap.py in send(self, client, options, operation, args, kwargs)
    133             return response
    134 
--> 135         return self.process_reply(client, operation_obj, response)
    136 
    137     async def send_async(self, client, options, operation, args, kwargs):

/opt/anaconda3/lib/python3.8/site-packages/zeep/wsdl/bindings/soap.py in process_reply(self, client, operation, response)
    179 
    180         elif response.status_code != 200 and not response.content:
--> 181             raise TransportError(
    182                 u"Server returned HTTP status %d (no content available)"
    183                 % response.status_code,

TransportError: Server returned HTTP status 404 (no content available)

Thanks in advance :)

0 Answers0