Я пытаюсь проверить несколько URL-адресов, чтобы узнать, вернутся ли они как ОК, прежде чем я буду ими управлять, у меня есть список URL-адресов в self.myList, который затем запускает их через HTTP-соединение httplib, чтобы получить ответ, однако я получаю нагрузку ошибок из httplib в cmd.httplib python/wxpython. sock stream error
код работает как я тестировал с ниже, и это правильно возвращается и устанавливает значение в wx.TextCtrl:
#for line in self.myList:
conn = httplib.HTTPConnection("www.google.com")
conn.request("HEAD", "/")
r1 = conn.getresponse()
r1 = r1.status, r1.reason
self.urlFld.SetValue(str(r1))
Это только, кажется, не работает, когда я прохожу его более 1 URL из myList.
for line in self.myList:
conn = httplib.HTTPConnection(line)
conn.request("HEAD", "/")
r1 = conn.getresponse()
r1 = r1.status, r1.reason
self.urlFld.SetValue(line + "\t\t" + str(r1))
Ошибки, которые я получаю на ЦМД
Traceback (most recent call last):
File "gui_texteditor_men.py", line 96, in checkBtnClick
conn.request("HEAD", "/")
File "C:\Python27\lib\httplib.py", line 958, in request
self._send_request(method, url, body, headers)
File "C:\Python27\lib\httplib.py", line 992, in _send_request
self.endheaders(body)
File "C:\Python27\lib\httplib.py", line 954, in endheaders
self._send_output(message_body)
File "C:\Python27\lib\httplib.py", line 814, in _send_output
self.send(msg)
File "C:\Python27\lib\httplib.py", line 776, in send
self.connect()
File "C:\Python27\lib\httplib.py", line 757, in connect
self.timeout, self.source_address)
File "C:\Python27\lib\socket.py", line 553, in create_connection
for res in getaddrinfo(host, port, 0, SOCK_STREAM):
socket.gaierror: [Errno 11004] getaddrinfo failed
Редактировать, обновленный код с помощью urlparse. Я импортировал urlparse.
for line in self.myList:
url = urlparse.urlparse(line)
conn = httplib.HTTPConnection(url.hostname)
conn.request("HEAD", url.path)
r1 = conn.getresponse()
r1 = r1.status, r1.reason
self.urlFld.AppendText(url.hostname + "\t\t" + str(r1))
с TRACEBACK,
C:\Python27\Coding>python gui_texteditor_men.py
Traceback (most recent call last):
File "gui_texteditor_men.py", line 97, in checkBtnClick
conn = httplib.HTTPConnection(url.hostname)
File "C:\Python27\lib\httplib.py", line 693, in __init__
self._set_hostport(host, port)
File "C:\Python27\lib\httplib.py", line 712, in _set_hostport
i = host.rfind(':')
AttributeError: 'NoneType' object has no attribute 'rfind'
теперь у меня есть www.google.com и www.bing.com в текстовый файл, когда он выдает эту ошибку.
Edit 2 @ Ая,
выглядит, как это не удалось из-за "\ п" между 2 URL. Я думал, что я закодировал его, чтобы удалить «\ n» с .strip(), но кажется, что это не имело никакого эффекта.
Failed on u'http://www.google.com\nhttp://www.bing.com'
Traceback (most recent call last):
File "gui_texteditor_men.py", line 99, in checkBtnClick
conn.request("HEAD", url.path)
File "C:\Python27\lib\httplib.py", line 958, in request
self._send_request(method, url, body, headers)
File "C:\Python27\lib\httplib.py", line 992, in _send_request
self.endheaders(body)
File "C:\Python27\lib\httplib.py", line 954, in endheaders
self._send_output(message_body)
File "C:\Python27\lib\httplib.py", line 814, in _send_output
self.send(msg)
File "C:\Python27\lib\httplib.py", line 776, in send
self.connect()
File "C:\Python27\lib\httplib.py", line 757, in connect
self.timeout, self.source_address)
File "C:\Python27\lib\socket.py", line 553, in create_connection
for res in getaddrinfo(host, port, 0, SOCK_STREAM):
socket.gaierror: [Errno 11004] getaddrinfo failed
Я еще раз посмотрел на мою .strip(), когда я открываю файл,
if dlg.ShowModal() == wx.ID_OK:
directory, filename = dlg.GetDirectory(), dlg.GetFilename()
self.filePath = '/'.join((directory, filename))
self.fileTxt.SetValue(self.filePath)
self.urlFld.LoadFile(self.filePath)
self.myList = self.urlFld.GetValue().strip()
и теперь TraceBack ошибки с "Ошибка при паП '"
Благодарности
Какие ошибки вы используете? – ThiefMaster
Похоже, что один из URL-адресов содержит недопустимое имя хоста. – Aya
он делает это, как www.blahlsghsh.com, но верно, что нужно пойти и попробовать, а затем вернуться, поскольку 404 не найден? EDIT: jsut вынул поддельное имя хоста и попытался снова, те же ошибки с помощью только google.com и bing.com, так что это не влияет на него. – jerrythebum