Python Forum

Full Version: Passing soapAction false to suds
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
I have a SOAP webservice wrote in Java and I call it with suds library:

def soapclient(request):

   username='user'    
   password='pwd'
   base64string = base64.encodestring('%s:%s' % (username, password)).replace('\n', '')
   authenticationHeader = {
      "SOAPAction" : "ActionName",
      "Authorization" : "Basic %s" % base64string
   }

   client = Client('http://my_ult_to_file?wsdl', headers=authenticationHeader)

   var=dict(utenteApplicativo='aaaaa', pageNumber=1, pageSize=1,
         carrelloDto=dict(idCarrelloSorgente='99999999994', 
         itemCarrelloDtoList=dict(causale='prova', codiceEnte='ente', importo=2, importoImposta=1, importoTotale=3, importoUnitario=2,
         quantitaItem=1, tipoContabilizzazione='TA')) )

   result = client.service.creaCarrello(var) 
   return render_to_response('soapclient.html', {'var': result})
but I receive the error:

Server raised fault: 'The given SOAPAction ActionName does not match an operation.'

In the wsdl file soapAction is not setted:
<wsdl:operation name="creaCarrello">
<soap:operation soapAction="" style="rpc"/>
<wsdl:input name="creaCarrello">
<soap:body namespace="http://infocamere.it/pagamentionlinews" use="literal"/>
</wsdl:input>
There is a manner to set soapAction in the client to a value false or similar?
(Dec-01-2017, 04:22 PM)PeppePegasus Wrote: [ -> ]I have a SOAP webservice wrote in Java and I call it with suds library:

def soapclient(request):

   username='user'    
   password='pwd'
   base64string = base64.encodestring('%s:%s' % (username, password)).replace('\n', '')
   authenticationHeader = {
      "SOAPAction" : "ActionName",
      "Authorization" : "Basic %s" % base64string
   }

   client = Client('http://my_ult_to_file?wsdl', headers=authenticationHeader)

   var=dict(utenteApplicativo='aaaaa', pageNumber=1, pageSize=1,
         carrelloDto=dict(idCarrelloSorgente='99999999994', 
         itemCarrelloDtoList=dict(causale='prova', codiceEnte='ente', importo=2, importoImposta=1, importoTotale=3, importoUnitario=2,
         quantitaItem=1, tipoContabilizzazione='TA')) )

   result = client.service.creaCarrello(var) 
   return render_to_response('soapclient.html', {'var': result})
but I receive the error:

Server raised fault: 'The given SOAPAction ActionName does not match an operation.'

In the wsdl file soapAction is not setted:
<wsdl:operation name="creaCarrello">
<soap:operation soapAction="" style="rpc"/>
<wsdl:input name="creaCarrello">
<soap:body namespace="http://infocamere.it/pagamentionlinews" use="literal"/>
</wsdl:input>
There is a manner to set soapAction in the client to a value false or similar?

SyntaxError: invalid syntax (<string>, line 1)