Получение html кода страницы,Get запрос на WinSock Delphi
Необходимо получить html код страницы, где в дальнейшем надо будет искать ссылку на картинку
Работаю через winsock, запрос отправляю следующим образом:
SendStr(stClient, 'GET '+addr+' HTTP/1.1'+#13+#10+'Content-Type:text/html'
+#13+#10+'User-Agent: Mozilla/4.0 (compatible; MSIE 6.0;Windows NT 5.2; .NET CLR 1.1.4322;
.NET CLR 2.0.50727)'
+#13+#10+'Host: '+testingserver+#13+#10+'Proxy-Connection: Keep-Alive'+#13+#10+#13+#10);
где, stClient - мой сокет, а addr - непосредственно адрес сайта
Но вот незадача, у меня парсится лишь сайт гугла, а при выборе другого сайта выдает ошибку: "404 - Bad Request"
Хотелось бы узнать в чем может быть проблема, и какой запрос все же следует отправлять, для получения корректного ответа?
Ответы (1 шт):
Выдержка из документа https://tools.ietf.org/html/rfc7230 с переводом
3.1.1. Первая строка имеет вид: Метод Цель HTTP/версия
5.3. Цель может иметь один из 4-х форматов (см 5.3.1 … 5.3.4)
5.3.1. Если метод не CONNECT и не OPTIONS, и запрос не к прокси, а непосредственно к серверу, то в качестве цели указывается путь и запрос (но не имя хоста).
Если путь пуст, то вместо него передается передается /
Например, если нужно получить документ http://www.example.org/where?q=now, следует установить TCP-соединение с www.example.org и выполнить запрос:
GET /where?q=now HTTP/1.1
Host: www.example.org
Таким образом в вашем случае переменная addr должна содержать только то, что правее имени хоста в URL. Если там ничего нет, то /