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 :)