saxutils.prepare_input_source. + , urllib.urlopen, UrlOpener urllib2 .
, , , EntityResolver, .
, saxutils.prepare_input_source urllib.urlopen . , -, urllib.
: :
def make_caching_prepare_input_source(old_prepare_input_source, proxy):
def caching_prepare_input_source(source, base = None):
if isinstance(source, xmlreader.InputSource):
return source
full_uri = urlparse.urljoin(base or "", source)
if not full_uri.startswith('http:'):
args = (source,) if base == None else (source, base)
return old_prepare_input_source(*args)
r = urllib2.Request(full_uri)
r.set_proxy(proxy, 'http')
f = urllib2.urlopen(r)
i = xmlreader.InputSource()
i.setSystemId(source)
i.setByteStream(f)
return i
return caching_prepare_input_source
def enable_http_proxy(server):
saxutils.prepare_input_source = make_caching_prepare_input_source(
saxutils.prepare_input_source,
server,
)
source
share