невозможно отправить данные в форму входа с помощью urllib python v3.2.1 - PullRequest
3 голосов
/ 25 августа 2011
    import urllib.parse
    import urllib.request
    import time
    def __init__(self, parent= None):

    QtGui.QWidget.__init__(self,parent)
    self.ui = Ui_MainWindow()
    self.ui.setupUi(self)
    username = 'name'

    password = 'pass'
    while True:
            try:
                page=urllib.request.urlopen('http://10.100.56.55:8090/httpclient.html','&username='+username+'@da-iict.org&password='+password+'&btnSubmit=Login')
                the_page=page.read()

Я пытался заставить этот кусок кода работать.альтернатива в python 2 работает просто отлично, но в python v3.2 я получаю ошибку " POST-данными должны быть байты или итеративное число байтов

1 Ответ

3 голосов
/ 25 августа 2011
import urllib.parse
import urllib.request
import time

username = 'name'
password = 'pass'

tm = 60

while True:
    url = "http://10.100.56.55:8090/httpclient.html"
    values = {'username': username, 'password': password, 'btnSubmit':'Login'}
    data = urllib.parse.urlencode(values)
    binary_data = data.encode('ascii')
    req = urllib.request.Request(url, binary_data)
    urllib.request.urlopen(req)

В Python3 они изменили его так, что данные должны быть двоичными, поэтому сначала нужно их кодировать.ASCII хорошо, если ваше имя пользователя / пароль не содержит символов, не относящихся к ASCII.

...