HTTP-запросы через библиотеку сокетов Python - PullRequest
2 голосов
/ 16 июня 2019

Я пытаюсь отправить простой HTTP-запрос GET на сайт через библиотеку сокетов Python. Пример веб-сайта, который я использовал здесь: https://azlyrics.com/lyrics/charlieputh/attention.html. Мой код:

from socket import *
serverName = 'azlyrics.com';
serverPort = 80;
clientSocket = socket(AF_INET, SOCK_STREAM);
print(clientSocket.connect((serverName, serverPort)));
message = '''GET /lyrics/charlieputh/attention.html HTTP/1.1
Host: www.azlyrics.com
Connection: keep-alive
''';
print(message);
clientSocket.send(message.encode());
modifiedMessage = clientSocket.recv(2048).decode();
print(modifiedMessage);
clientSocket.close();

Но я не получаю ответного сообщения в ответ. Также объект, который я получаю взамен connect(), - None. Я пробовал тот же URL с библиотекой запросов Python, и он отлично работает. Что я тут не так делаю?

1 Ответ

0 голосов
/ 16 июня 2019

Тело HTTP-запроса должно заканчиваться \r\n (CR-LF),

пожалуйста, попробуйте это:

from socket import *
serverName = 'azlyrics.com';
serverPort = 80;
clientSocket = socket(AF_INET, SOCK_STREAM);
print(clientSocket.connect((serverName, serverPort)));
message = '''GET /lyrics/charlieputh/attention.html HTTP/1.1
Host: www.azlyrics.com
Connection: keep-alive


''';
print(message);
clientSocket.send(message.encode());
modifiedMessage = clientSocket.recv(2048).decode();
print(modifiedMessage);
clientSocket.close();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...