Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

HTTP Get, через TClientSocket [D6, WinXP]


Страницы:   1 2

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]

код


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо