![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
HTTP Get, через TClientSocket [D6, WinXP]
delpher_gray © (2004-05-16 14:50:00)Как выполнить HTTP запрос GET через TClientSocket ? Какие данные нужно посылать ?
И как принять только содержание страницы (заголовок не нужен)
Rouse_ (2004-05-17 23:05:00) [1]> а если прокси - не HTTP-прокси, а SOCKS-прокси? будет работать?
Планирую и это и HTTPS ...
Вопрос только во времени...
nikkie (2004-05-17 22:41:00) [2]>выложу обертку вокруг WinInet где все решено на уровне примитива...
а если без обертки? InternetOpen, InternetConnect, HttpOpenRequest, HttpSendRequest, InternetReadFile, InternetCloseHandle - и это проще, чем IdHTTP.Get(...)? на обертку твою интересно посмотреть будет, конечно.
>Включая прокси и остальные удобности...
а если прокси - не HTTP-прокси, а SOCKS-прокси? будет работать?
Rouse_ (2004-05-17 21:18:00) [3]> просто значительно проще, чем работа с WinInet.
Не согласен... причем в корне...
Через некоторое время, если со временем все будет как я и планирую выложу обертку вокруг WinInet где все решено на уровне примитива...
Включая прокси и остальные удобности...
Хотя кто знает...
nikkie (2004-05-17 20:13:00) [4]>Очень удобно, если не охота разбираться с сокетами и остальным... :)
а есть охота разбираться с WinInet :))
то обсуждение тоже мимо меня проскочило, я бы почитал...
для меня большим доводом против использования WinInet является то, что это черный ящик, работающий с открытыми протоколами, допускающими реализацию кем угодно. таким образом, если в определенной конфигурации клиент-прокси-сервер возникает проблема, то сделать уже что-либо проблематично. не знаю также, как обстоят с различными версиями WinInet, что там менялось и т.д.
ну и, конечно, использование соответствующих компонент, скажем Indy, просто значительно проще, чем работа с WinInet.
Polevi (2004-05-17 14:38:00) [5]>[20] Rouse_ © (17.05.04 14:08)
да, по декларации ф-ий ясно что за зверь :)
Rouse_ (2004-05-17 14:08:00) [6]> [16] Ihor Osov'yak © (17.05.04 01:50)
Ссылку к сожалению найти не могу - вероятно ветка должна быть уже в архивах, поэтому придется ждать пока дайджесты не заработают :)
> [18] Polevi © (17.05.04 10:23)
uses ..., WinInet + в MSDN описано стандартная очередность выполнения функций...
Очень удобно, если не охота разбираться с сокетами и остальным... :)
panov (2004-05-17 10:32:00) [7]FSend - строка, посылаемая серверу.
FQuery - запрос, посылаемый серверу.
FSend := 'GET ' + FQuery + ' HTTP/1.1'+ CRLF+
'User-Agent: Mozilla/4.0 (Windows;compatible; MSIE 5.5) +CRLF+
'Host: '+FHost+CRLF+
'Accept: */*'+CRLF+
'Accept: image/gif'+CRLF+
'Accept: image/x-xbitmap'+CRLF+
'Connection: close'+CRLF+CRLF;
Polevi (2004-05-17 10:23:00) [8]я если честно вообще не в курсе что такое WinInet :-)
delpher_gray (2004-05-17 06:38:00) [9]C WinInet были проблемы (глючило), а в форуме никто не подскзал почему. Я знал как сделать неглючную посылку/приём данных только через WinSock. Сейчас вроде с WinInet разобрался, всё работает...
Ihor Osov'yak (2004-05-17 01:50:00) [10]2 Rouse_ © (17.05.04 01:19)
> где он может применяться а где нет...
Если можно ссылочку - был бы благодарен - а то я немного отсутствовал на форуме - сию вещь пропустил - а было бы интересно взглянуть
> твой уровень мне известен
спасибо, но в сетях я действительно пока не сильно оторвался от бегин левел..
Rouse_ (2004-05-17 01:19:00) [11]> [14] Ihor Osov'yak © (17.05.04 01:08)
Игорь - ну к тебе то вопросов вообще у меня нет... твой уровень мне известен, просто странно что многие с упорством раненного кабана пытаются пролезть через абсолютно непонятные им вещи в надежде получить минимально приемлемый результат. И данный момент несколько раз уже обсуждался, причем строились все доводы в пользу использования WinInet и по разграничению - где он может применяться а где нет...
Ihor Osov'yak (2004-05-17 01:08:00) [12]2 [13] Rouse_
Ну, я собственно такие вещи через WinInet и делаю. А здесь - собственно только реплика и была..
По существу - использование wininet подразумеват умение работать с потоками, или наличия понятия об ассинхронном режиме.. Кинуть TClientSocket на форму - иногда проще бывает.. Хотя может здесь я и не прав. В смысле, что кинуть на форму и проще, но получить качественный результат - это еще как сказать... В общем случае приключений получить можно больше, чем с wininet. Хотя это имхо - сети - это далеко не самая сильная моя сторона.
Rouse_ (2004-05-16 22:15:00) [13]Оффтоп:
Вот сколько занимаюсь сетью, не могу понять одного - почему не используется WinInet специально предназначенный для таких целей, а используется TClientSocket предназначенный для решения совершенно других задач? А потом все дружно начинают задавать вопросы по основам запросов и принятия ответов к/от сервера...
Polevi (2004-05-16 20:55:00) [14]>после Socket.Open вроде бы нужно подождать пока установится соединение...
это если неблокирующий режим
SergP (2004-05-16 20:21:00) [15]
> Socket.Host := 'localhost';
> Socket.Port := 80;
> Socket.Open;
> Socket.SendText('GET /index.php HTTP/1.0');
> Socket.Close;
Ну то что в конце запроса не хватает #13#10#13#10 это одно. Да и [10] Polevi © (16.05.04 19:10)об этом уже сказал. Но я не вижу где ты принимаешь ответ? Вижу только что запрос послал и закрываешь сокет.
К тому же не знаю как там оно работает с localhost'ом, но если работать по сети то после Socket.Open вроде бы нужно подождать пока установится соединение...
Polevi (2004-05-16 19:10:00) [16]Socket.Host := 'localhost';
Socket.Port := 80;
Socket.Open;
Socket.SendText('GET /index.php HTTP/1.0'+#13#10#13#10);
Socket.Close;
delpher_gray (2004-05-16 19:08:00) [17]Socket.Host := 'localhost';
Socket.Port := 80;
Socket.Open;
Socket.SendText('GET /index.php HTTP/1.0');
Socket.Close;
Polevi (2004-05-16 17:49:00) [18]> [7] Ihor Osov'yak © (16.05.04 17:34)
именно для этого попросил код :)
Ihor Osov'yak (2004-05-16 17:34:00) [19]2 [3] delpher_gray © (16.05.04 16:12)
Хм. а какое \n\n? Может все же 'GET /index.php HTTP/1.0'#13#10#13#10
?
Polevi (2004-05-16 17:33:00) [20]код