Добро пожаловать! Это — архивная версия форумов на «Хакер.Ru». Она работает в режиме read-only.
 

Как получить html документ по socket'ам?

Пользователи, просматривающие топик: none

Зашли как: Guest
Все форумы >> [Компилируемые языки] >> Как получить html документ по socket'ам?
Имя
Сообщение << Старые топики   Новые топики >>
Как получить html документ по socket'ам? - 2008-03-01 20:43:46.496666   
L.win

Сообщений: 20
Оценки: 0
Присоединился: 2007-06-08 18:30:12.490000
Вопрос собственно уже поставлен в теме. Я отправляю GET запрос на сервер - просто, с помощью стандартного send, жду ответа стандартным же recv. Получаю ответ, но в нем только 200 OK, размер документа и дата обновления - и все, ни каких дальнейших ц.у. и никакого html кода. Но раз все 200 и ОК, как бы заполучить желаемы документ? (Запрос отправлялся на ya.ru).
Post #: 1
RE: Как получить html документ по socket'ам? - 2008-03-03 08:24:40.413333   
heaven7

Сообщений: 134
Оценки: 5
Присоединился: 2007-12-29 20:49:38.910000
тут может быть много причин
или ты недостаточное количество раз вызываешь функцию чтения из сокета или у тебя проблемы с нэтом
Post #: 2
RE: Как получить html документ по socket'ам? - 2008-03-03 17:09:20.783333   
necrostaz

Сообщений: 172
Оценки: 0
Присоединился: 2007-02-27 15:54:59.460000
да и на код бы посмотреть
Post #: 3
RE: Как получить html документ по socket'ам? - 2008-03-28 22:24:45.590000   
L.win

Сообщений: 20
Оценки: 0
Присоединился: 2007-06-08 18:30:12.490000
отправляю такой запрос &nbsp; char* request = &nbsp;"GET / HTTP/1.1\r\n" &nbsp;"Accept: text/xml\r\n" &nbsp;"Host: ya.ru\r\n" &nbsp;"Connection: close\r\n\r\n";.
В ответ получаю коротенькое сообщение содержащее состояние сервера и длинну чего-то. я ставил длинну принимаемого сообщения больше присланной, но от этого ничего не менялось: отображалось тоже сообщение и все, дальше пустота. с нетом вроде все ок: выделенка, проксей вроде нет…
Post #: 4
RE: Как получить html документ по socket'ам? - 2008-03-29 12:03:54.250000   
Элестраго

Сообщений: 29
Оценки: 0
Присоединился: 2007-02-26 18:43:34.910000
на держи
function GetUrl(const URL: String): String; var FSession, FConnect, FRequest: HINTERNET; FHost, FScript: String; Ansi: PAnsiChar; Buff: array [0..1023] of Char; BytesRead: Cardinal; begin Result := ''; // Небольшой парсинг // вытаскиваем имя хоста и параметры обращения к скрипту FHost := DelHttp(Url); FScript := Url; Delete(FScript, 1, Pos(FHost, FScript) + Length(FHost)); // Инициализируем WinInet FSession := InternetOpen('DMFR', INTERNET_OPEN_TYPE_PRECONFIG, nil, nil, 0); if not Assigned(FSession) then Exit; try // Попытка соединения с сервером FConnect := InternetConnect(FSession, PChar(FHost), HTTP_PORT, nil, 'HTTP/1.0', INTERNET_SERVICE_HTTP, 0, 0); if not Assigned(FConnect) then Exit; try // Подготавливаем запрос страницы Ansi := 'text/*'; FRequest := HttpOpenRequest(FConnect, 'GET', PChar(FScript), 'HTTP/1.0', '', @Ansi, INTERNET_FLAG_RELOAD, 0); if not Assigned(FConnect) then Exit; try // Добавляем заголовки if not (HttpAddRequestHeaders(FRequest, Header, Length(Header), HTTP_ADDREQ_FLAG_REPLACE or HTTP_ADDREQ_FLAG_ADD)) then Exit; // Отправляем запрос if not (HttpSendRequest(FRequest, nil, 0, nil, 0)) then Exit; // Получаем ответ FillChar(Buff, SizeOf(Buff), 0); repeat Result := Result + Buff; FillChar(Buff, SizeOf(Buff), 0); InternetReadFile(FRequest, @Buff, SizeOf(Buff), BytesRead); until BytesRead = 0; finally InternetCloseHandle(FRequest); end; finally InternetCloseHandle(FConnect); end; finally InternetCloseHandle(FSession); end; end;

Пример использования

procedure TForm1.Button1Click(Sender: TObject); begin Memo1.Text := GetUrl('ya.ru'); end;
Post #: 5
RE: Как получить html документ по socket'ам? - 2008-03-29 14:10:53.050000   
L.win

Сообщений: 20
Оценки: 0
Присоединился: 2007-06-08 18:30:12.490000
Пасиб!)
Post #: 6
Страниц:  [1]
Все форумы >> [Компилируемые языки] >> Как получить html документ по socket'ам?







Связаться:
Вопросы по сайту / xakep@glc.ru

Предупреждение: использование полученных знаний в противозаконных целях преследуется по закону.