Получение 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. Если там ничего нет, то /

→ Ссылка