Текущий архив: 2004.07.18;
Скачать: CL | DM;
Вниз
HTTP Get, через TClientSocket Найти похожие ветки
← →
delpher_gray © (2004-05-16 14:50) [0]Как выполнить HTTP запрос GET через TClientSocket ? Какие данные нужно посылать ?
И как принять только содержание страницы (заголовок не нужен)
← →
Михаил (2004-05-16 15:11) [1]Да самому интересно какой там должен быть запрос?
← →
FireMan_Alexey © (2004-05-16 15:41) [2]Создай TSServerSocket скажем на 9000 порту выключи инет и настрой свой браузер на прокси 127.0.0.1 и порт 9000.
напиши любой адрес и увидишь запрос от IE к Серверу.
На твой запрос отосланный в инет тем же TClientSocket-том прийдет вся страничка, а затем принимаешь ее до дисконнекта со стороны сервера, а затем запихуешь в строку.
Далее Элементарные знания паскаля:
Var
Index1,Index2:Integer;
telo:String;
Begin
Index1:=Pos("<BODY>",Твоя строка);
Index2:=Pos("</BODY>",Твоя строка);
Telo:=Copy(Твоя строка,Index1,Index2-Index1);
End;
Вот и все!
← →
delpher_gray © (2004-05-16 16:12) [3]Соединяюсь с localhost:80, посылаю:
GET /index.php HTTP/1.0\n\n
Ответа нет :(
← →
Polevi © (2004-05-16 16:41) [4]а что у тебя слушает на 80 порту
← →
delpher_gray © (2004-05-16 17:23) [5]Апач.
Главно когда в тельнете пишу: GET /index.php HTTP/1.0\n\n, то всё работает.
← →
Polevi © (2004-05-16 17:33) [6]код
← →
Ihor Osov'yak © (2004-05-16 17:34) [7]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:49) [8]> [7] Ihor Osov"yak © (16.05.04 17:34)
именно для этого попросил код :)
← →
delpher_gray © (2004-05-16 19:08) [9]Socket.Host := "localhost";
Socket.Port := 80;
Socket.Open;
Socket.SendText("GET /index.php HTTP/1.0");
Socket.Close;
← →
Polevi © (2004-05-16 19:10) [10]Socket.Host := "localhost";
Socket.Port := 80;
Socket.Open;
Socket.SendText("GET /index.php HTTP/1.0"+#13#10#13#10);
Socket.Close;
← →
SergP © (2004-05-16 20:21) [11]
> 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 20:55) [12]>после Socket.Open вроде бы нужно подождать пока установится соединение...
это если неблокирующий режим
← →
Rouse_ © (2004-05-16 22:15) [13]Оффтоп:
Вот сколько занимаюсь сетью, не могу понять одного - почему не используется WinInet специально предназначенный для таких целей, а используется TClientSocket предназначенный для решения совершенно других задач? А потом все дружно начинают задавать вопросы по основам запросов и принятия ответов к/от сервера...
← →
Ihor Osov'yak © (2004-05-17 01:08) [14]2 [13] Rouse_
Ну, я собственно такие вещи через WinInet и делаю. А здесь - собственно только реплика и была..
По существу - использование wininet подразумеват умение работать с потоками, или наличия понятия об ассинхронном режиме.. Кинуть TClientSocket на форму - иногда проще бывает.. Хотя может здесь я и не прав. В смысле, что кинуть на форму и проще, но получить качественный результат - это еще как сказать... В общем случае приключений получить можно больше, чем с wininet. Хотя это имхо - сети - это далеко не самая сильная моя сторона.
← →
Rouse_ © (2004-05-17 01:19) [15]> [14] Ihor Osov"yak © (17.05.04 01:08)
Игорь - ну к тебе то вопросов вообще у меня нет... твой уровень мне известен, просто странно что многие с упорством раненного кабана пытаются пролезть через абсолютно непонятные им вещи в надежде получить минимально приемлемый результат. И данный момент несколько раз уже обсуждался, причем строились все доводы в пользу использования WinInet и по разграничению - где он может применяться а где нет...
← →
Ihor Osov'yak © (2004-05-17 01:50) [16]2 Rouse_ © (17.05.04 01:19)
> где он может применяться а где нет...
Если можно ссылочку - был бы благодарен - а то я немного отсутствовал на форуме - сию вещь пропустил - а было бы интересно взглянуть
> твой уровень мне известен
спасибо, но в сетях я действительно пока не сильно оторвался от бегин левел..
← →
delpher_gray © (2004-05-17 06:38) [17]C WinInet были проблемы (глючило), а в форуме никто не подскзал почему. Я знал как сделать неглючную посылку/приём данных только через WinSock. Сейчас вроде с WinInet разобрался, всё работает...
← →
Polevi © (2004-05-17 10:23) [18]я если честно вообще не в курсе что такое WinInet :-)
← →
panov © (2004-05-17 10:32) [19]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;
← →
Rouse_ © (2004-05-17 14:08) [20]> [16] Ihor Osov"yak © (17.05.04 01:50)
Ссылку к сожалению найти не могу - вероятно ветка должна быть уже в архивах, поэтому придется ждать пока дайджесты не заработают :)
> [18] Polevi © (17.05.04 10:23)
uses ..., WinInet + в MSDN описано стандартная очередность выполнения функций...
Очень удобно, если не охота разбираться с сокетами и остальным... :)
← →
Polevi © (2004-05-17 14:38) [21]>[20] Rouse_ © (17.05.04 14:08)
да, по декларации ф-ий ясно что за зверь :)
← →
nikkie © (2004-05-17 20:13) [22]>Очень удобно, если не охота разбираться с сокетами и остальным... :)
а есть охота разбираться с WinInet :))
то обсуждение тоже мимо меня проскочило, я бы почитал...
для меня большим доводом против использования WinInet является то, что это черный ящик, работающий с открытыми протоколами, допускающими реализацию кем угодно. таким образом, если в определенной конфигурации клиент-прокси-сервер возникает проблема, то сделать уже что-либо проблематично. не знаю также, как обстоят с различными версиями WinInet, что там менялось и т.д.
ну и, конечно, использование соответствующих компонент, скажем Indy, просто значительно проще, чем работа с WinInet.
← →
Rouse_ © (2004-05-17 21:18) [23]> просто значительно проще, чем работа с WinInet.
Не согласен... причем в корне...
Через некоторое время, если со временем все будет как я и планирую выложу обертку вокруг WinInet где все решено на уровне примитива...
Включая прокси и остальные удобности...
Хотя кто знает...
← →
nikkie © (2004-05-17 22:41) [24]>выложу обертку вокруг WinInet где все решено на уровне примитива...
а если без обертки? InternetOpen, InternetConnect, HttpOpenRequest, HttpSendRequest, InternetReadFile, InternetCloseHandle - и это проще, чем IdHTTP.Get(...)? на обертку твою интересно посмотреть будет, конечно.
>Включая прокси и остальные удобности...
а если прокси - не HTTP-прокси, а SOCKS-прокси? будет работать?
← →
Rouse_ © (2004-05-17 23:05) [25]> а если прокси - не HTTP-прокси, а SOCKS-прокси? будет работать?
Планирую и это и HTTPS ...
Вопрос только во времени...
Страницы: 1 вся ветка
Текущий архив: 2004.07.18;
Скачать: CL | DM;
Память: 0.53 MB
Время: 0.035 c