Как получить html документ по socket'ам?
Пользователи, просматривающие топик: none
|
Зашли как: Guest
|
Имя |
Сообщение |
<< Старые топики Новые топики >> |
|
|
Как получить 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).
|
|
|
RE: Как получить html документ по socket'ам? - 2008-03-03 08:24:40.413333
|
|
|
heaven7
Сообщений: 134
Оценки: 5
Присоединился: 2007-12-29 20:49:38.910000
|
тут может быть много причин или ты недостаточное количество раз вызываешь функцию чтения из сокета или у тебя проблемы с нэтом
|
|
|
RE: Как получить html документ по socket'ам? - 2008-03-03 17:09:20.783333
|
|
|
necrostaz
Сообщений: 172
Оценки: 0
Присоединился: 2007-02-27 15:54:59.460000
|
да и на код бы посмотреть
|
|
|
RE: Как получить html документ по socket'ам? - 2008-03-28 22:24:45.590000
|
|
|
L.win
Сообщений: 20
Оценки: 0
Присоединился: 2007-06-08 18:30:12.490000
|
отправляю такой запрос
char* request =
"GET / HTTP/1.1\r\n"
"Accept: text/xml\r\n"
"Host: ya.ru\r\n"
"Connection: close\r\n\r\n"; . В ответ получаю коротенькое сообщение содержащее состояние сервера и длинну чего-то. я ставил длинну принимаемого сообщения больше присланной, но от этого ничего не менялось: отображалось тоже сообщение и все, дальше пустота. с нетом вроде все ок: выделенка, проксей вроде нет…
|
|
|
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;
|
|
|
RE: Как получить html документ по socket'ам? - 2008-03-29 14:10:53.050000
|
|
|
L.win
Сообщений: 20
Оценки: 0
Присоединился: 2007-06-08 18:30:12.490000
|
Пасиб!)
|
|
|
|
|