Ignore:
Timestamp:
16/02/10 16:11:08 (11 years ago)
Author:
pjkersha
Message:
  • Important fix for SOAP client used with SAML SOAP binding: set text/xml content type.
  • Refactored SAML SOAP binding query clients.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • TI12-security/trunk/NDGSecurity/python/ndg_security_common/ndg/security/common/soap/client.py

    r6063 r6578  
    137137    def __init__(self): 
    138138        self.__fileobject = None 
    139  
    140     def _getFileobject(self): 
     139         
     140    @property 
     141    def fileobject(self): 
     142        "urllib2 file object returned from request" 
    141143        return self.__fileobject 
    142  
    143     fileobject = property(fget=_getFileobject, 
    144                           doc="urllib2 file object returned from request") 
    145144 
    146145     
    147146class UrlLib2SOAPClient(SOAPClientBase): 
    148147    """urllib2 based SOAP Client""" 
     148    DEFAULT_HTTP_HEADER = {'Content-type': 'text/xml'} 
    149149     
    150150    def __init__(self): 
     
    154154        self.__openerDirector.add_handler(urllib2.HTTPHandler()) 
    155155        self.__timeout = None 
     156        self.__httpHeader = UrlLib2SOAPClient.DEFAULT_HTTP_HEADER.copy() 
     157 
     158    def _getHttpHeader(self): 
     159        return self.__httpHeader 
     160 
     161    def _setHttpHeader(self, value): 
     162        if not isinstance(value, dict): 
     163            raise TypeError('Expecting dict type for "httpHeader" attribute; ' 
     164                            'got %r instead' % type(value)) 
     165        self.__httpHeader = value 
     166 
     167    httpHeader = property(_getHttpHeader, _setHttpHeader,  
     168                          doc="Set HTTP header fields in this dict object") 
    156169 
    157170    def _getTimeout(self): 
     
    203216             
    204217        soapRequestStr = soapRequest.envelope.serialize() 
    205          
    206         if log.level <= logging.DEBUG: 
     218 
     219        if log.getEffectiveLevel() <= logging.DEBUG: 
    207220            from ndg.security.common.utils.etree import prettyPrint 
    208221            log.debug("SOAP Request:") 
     
    211224 
    212225        soapResponse = UrlLib2SOAPResponse() 
    213         response = self.openerDirector.open(soapRequest.url,  
     226        urllib2Request = urllib2.Request(soapRequest.url)  
     227        for i in self.httpHeader.items(): 
     228            urllib2Request.add_header(*i) 
     229             
     230        response = self.openerDirector.open(urllib2Request,  
    214231                                            soapRequestStr,  
    215232                                            *arg) 
    216233        if response.code != httplib.OK: 
    217             output = response.read() 
    218234            excep = HTTPException("Response for request to [%s] is: %d %s" %  
    219235                                  (soapRequest.url,  
Note: See TracChangeset for help on using the changeset viewer.