Сфокусируйтесь на urllib2
, для этого все работает довольно хорошо. Не связывайтесь с httplib
, это не API верхнего уровня.
То, что вы заметили, это то, что urllib2
не следует перенаправлению.
Вам нужно сложить экземпляр HTTPRedirectHandler
, который будет ловить и выполнять перенаправления.
Кроме того, вы можете создать подкласс по умолчанию HTTPRedirectHandler
для сбора информации, которую вы затем проверите в ходе модульного тестирования.
cookie_handler= urllib2.HTTPCookieProcessor( self.cookies )
redirect_handler= HTTPRedirectHandler()
opener = urllib2.build_opener(redirect_handler,cookie_handler)
Затем вы можете использовать этот opener
объект для POST и GET, правильно обрабатывая перенаправления и файлы cookie.
Вы можете добавить свой собственный подкласс HTTPHandler
, чтобы также регистрировать и регистрировать различные коды ошибок.