Найти - Пользователи
Полная версия: Запрос socket.send('GET url HTTP/1.0\n\n'). url - переменная на адрес. Сервер выдаёт ошибку 400. Помогите
Начало » Python для новичков » Запрос socket.send('GET url HTTP/1.0\n\n'). url - переменная на адрес. Сервер выдаёт ошибку 400. Помогите
1
yuriimysnyk
Здравсвуйте. Помогите, пожалуйста разобраться, почему не работает код. Вот в таком варианте кода сервер отвечает ошибкой 400. (Использовал Python 2.7)

import socket
mysock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
url = raw_input('Enter_')
if len(url) == 0: url = 'http://data.pr4e.org/romeo.txt'
host = url.split('/')
mysock.connect((host, 80))
mysock.send('GET url HTTP/1.0\n\n')
print mysock.recv(1024)
mysock.close()

Проблема в этой строке: mysock.send('GET url HTTP/1.0\n\n')
Если прописать так: mysock.send('GET http://data.pr4e.org/romeo.txt HTTP/1.0\n\n') то все работает.
Второй вариант не подходит, поскольку суть упражнения в том, чтобы выполнять запрос на адрес, прописанный пользователем. Как исправить код?
py.user.next
Поставь себе третий питон и используй пример из документации
https://docs.python.org/3/library/socket.html#example

Если вопросы остаются, то при выкладывании кода на форум, оборачивай его в теги code.

yuriimysnyk
host = url.split('/')
В host должна попасть строка, а у тебя написано, что туда попадает список. Да, мы знаем, что там есть квадратные скобки, которые куда-то делись. Так вот делись они из-за того, что: 1) ты не использовал теги code, как принято на всех форумах; 2) ты не перечитал то, что запостил, и оставил лежать неправильный код. В итоге мы должны по твоему неправильному коду строить догадки, что же в нём было.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB