2014-02-21 2 views
1

Я только начал работать с urllib в python 3.3.3, и я могу использовать urllib.request.urlopen() для создания запросов POST. Однако то, что я хотел бы сделать, это POST с HTTPS. Я видел, что в документации urlopen говорится: «В настоящее время HTTP-запросы являются единственными, которые используют данные» (и мне нужен параметр «data» для запроса POST).Python3 urllib POST с HTTPS

Тогда я увидел, что urllib.request.HTTPSHandler, похоже, может сделать HTTPS POST через его https_open(). К сожалению, кажется, я не могу понять, как использовать эту функцию. Сейчас я просто хочу сделать простой HTTPS GET с этим обработчиком, так что я пытался сделать, это

import urllib.request 
r = urllib.request.Request("https://www.google.com") 
handler = urllib.request.HTTPSHandler() 
handler.https_open(r) 

, но это приводит к AttributeError: 'Request' object has no attribute 'timeout'

Как я могу получить HTTPSHandler.https_open() работать? Или urlopen вызвать функцию https_open, если я использовал

opener = urllib.request.build_opener(urllib.request.HTTPSHandler) 
urllib.request.install_opener(opener) 

до и фактически делает запрос HTTPS POST уже? Благодаря!

ответ

0

Попробуйте использовать data=None с помощью urlopen.

Или используйте Requests

+0

Привет, как я уже говорил в посте мне нужен параметр «данные», потому что я должен сделать запрос POST. Без данных я могу только делать запросы GET. – user1448268