如何在不使用urlopen的情况下发出urllib2 POST请求?

时间:2017-06-21 05:36:28

标签: python python-2.7 google-app-engine urllib2

使用python 2.我有一个BasicAuthHandler,它已作为开启者安装,我用来向一个站点发出请求。

passman = urllib2.HTTPPasswordMgrWithDefaultRealm()
passman.add_password(None, base_url, username, password)
authhandler = urllib2.HTTPBasicAuthHandler(passman)
opener = urllib2.build_opener(authhandler)
urllib2.install_opener(opener)

我现在想要在没有开启者的情况下向另一个网站发出请求。我无法使用请求库,因为我正在使用gooogle应用引擎,我将不得不安装另一个库,以便它与GAE一起正常工作。那么有没有办法在发出此请求之前卸载一个开启器并重新安装它?

1 个答案:

答案 0 :(得分:0)

您可以构建和安装不同的开场白。我就是这样做的:

opener2 = urllib2.OpenerDirector()
default_classes = [urllib2.HTTPHandler, urllib2.HTTPDefaultErrorHandler,
                   MyFTPHandler, urllib2.HTTPErrorProcessor]
if hasattr(httplib, 'HTTPS'):
    default_classes.insert(0, urllib2.HTTPSHandler)
for klass in default_classes:
    opener2.add_handler(klass())

urllib2.install_opener(opener2)

使用然后返回第一个开场白(urllib2.install_opener(opener))。