def callRemote(self, method, *args, **kwargs): payload = SOAPpy.buildSOAP(args=args, kw=kwargs, method=method, header=self.header, namespace=self.namespace) return client.getPage(self.url, postdata=payload, method="POST", headers={'content-type': 'text/xml', 'SOAPAction': method} ).addCallback(self._cbGotResult)
def call(self, method, **kwargs): """ Call the given remote method with the given arguments, as keywords. Returns a deferred, called with SOAPpy structure representing the soap response. @param method: The method name to call, eg. 'GetExternalIP' @param kwargs: The parameters of the call, as keywords @return: A deferred called with the external ip address of this host @rtype: L{twisted.internet.defer.Deferred} """ payload = SOAPpy.buildSOAP(method=method, config=Config, namespace=self._prefix, kw=kwargs) # Here begins the nasty hack payload = payload.replace( # Upnp wants s: instead of SOAP-ENV 'SOAP-ENV','s').replace( # Doesn't seem to like these encoding stuff 'xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/"', '').replace( 'SOAP-ENC:root="1"', '').replace( # And it wants u: instead of ns1 namespace for arguments.. 'ns1','u') logging.debug("SOAP Payload:\n%s", payload) return client.getPage(self._url, postdata=payload, method="POST", headers={'content-type': 'text/xml', 'SOAPACTION': '%s#%s' % (self._prefix, method)} ).addCallbacks(self._got_page, self._got_error)
def _methodNotFound(self, request, methodName): response = SOAPpy.buildSOAP( SOAPpy.faultType("%s:Client" % SOAPpy.NS.ENV_T, "Method %s not found" % methodName), encoding=self.encoding, ) self._sendResponse(request, response, status=500)
def _gotResult(self, result, request, methodName): # hack twisted.web.soap here: # do not wrap result in a <Result> element response = SOAPpy.buildSOAP( kw={'%sResponse' % methodName: result}, encoding=self.encoding) self._sendResponse(request, response)
def _gotError(self, failure, request, methodName): e = failure.value if isinstance(e, SOAPpy.faultType): fault = e else: fault = SOAPpy.faultType("%s:Server" % SOAPpy.NS.ENV_T, "Method %s failed." % methodName) response = SOAPpy.buildSOAP(fault, encoding=self.encoding) self._sendResponse(request, response, status=500)
def callRemote(self, method, *args, **kwargs): print "callRemote: " + str(args) kwargs.setdefault('headers', {})['Content-Type'] = 'text/xml' payload = SOAPpy.buildSOAP(args=args, kw=kwargs, method=method, header=None, namespace=None) return client.getPage(self.url, postdata=payload, method="POST", headers = kwargs['headers'] ).addCallback(self._cbGotResult)
def callRemote(self, method, *args, **kwargs): print "callRemote: " + str(args) kwargs.setdefault('headers', {})['Content-Type'] = 'text/xml' payload = SOAPpy.buildSOAP(args=args, kw=kwargs, method=method, header=None, namespace=None) return client.getPage(self.url, postdata=payload, method="POST", headers=kwargs['headers']).addCallback( self._cbGotResult)
def _gotResult(self, result, request, methodName): if not isinstance(result, SOAPpy.voidType): result = {"Result": result} response = SOAPpy.buildSOAP(kw={'%sResponse' % methodName: result}, encoding=self.encoding) self._sendResponse(request, response)
def _methodNotFound(self, request, methodName): response = SOAPpy.buildSOAP(SOAPpy.faultType("%s:Client" % SOAPpy.NS.ENV_T, "Method %s not found" % methodName), encoding=self.encoding) self._sendResponse(request, response, status=500)
import sys sys.path.insert(1, "..") import SOAPpy import time dep = SOAPpy.dateTimeType((2004, 3, 24, 12, 30, 59, 4, 86, 0)) ret = SOAPpy.dateTimeType((2004, 3, 26, 12, 30, 59, 4, 86, 0)) in0 = SOAPpy.structType() in0._addItem('outwardDate', dep) in0._addItem('returnDate', ret) in0._addItem('originAirport', 'den') in0._addItem('destinationAirport', 'iad') x = SOAPpy.buildSOAP( in0, method="getAirFareQuote", namespace="urn:SBGAirFareQuotes.sbg.travel.ws.dsdata.co.uk" ) wsdl = 'http://www.xmethods.net/sd/2001/TemperatureService.wsdl' proxy = SOAPpy.WSDL.Proxy(wsdl)
import sys sys.path.insert(1, "..") import SOAPpy import time dep = SOAPpy.dateTimeType((2004, 3, 24, 12, 30, 59, 4, 86, 0)) ret = SOAPpy.dateTimeType((2004, 3, 26, 12, 30, 59, 4, 86, 0)) in0 = SOAPpy.structType() in0._addItem('outwardDate', dep) in0._addItem('returnDate', ret) in0._addItem('originAirport', 'den') in0._addItem('destinationAirport', 'iad') x = SOAPpy.buildSOAP( in0, method="getAirFareQuote", namespace="urn:SBGAirFareQuotes.sbg.travel.ws.dsdata.co.uk") wsdl = 'http://www.xmethods.net/sd/2001/TemperatureService.wsdl' proxy = SOAPpy.WSDL.Proxy(wsdl)
def soap(method, attachments=[], **kwargs): req = SOAPpy.buildSOAP(method=method, kw=kwargs) headers = {'SOAPAction':'"/"'} req = urllib2.Request(JASPER_URL, req, headers) return SoapResponse(urllib2.urlopen(req))