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

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

Как подкл. ч-з TCPClient, отправить строку "GET" и пол.ответ ? [D7, WinXP]


Страницы:   1 2 3

jiny ©   (2007-02-21 10:55:00) 

пишу свой прокси
Задача следующая :
уже получив набор строк из браузера клиента переслать или запросить информацию в текст. виде и переправить ее обратно браузеру клиента. С отправкой клиенту проблем не возникает, но вот с расшифровкой строки принимаемой от браузера возникли вопросы, я попробовал сделать так

TCPClient1.RemoteHost:=' http://www.microsoft.com/';
TcpClient1.RemotePort:='80';
try
if TcpClient1.Connect then
 TcpClient1.SendLn(ClientMsg); //ClientMsg - TStringList  с данными сервера
finally
 TcpClient1.Disconnect;
end;

На ресив TCpclient1 повесил брейк-поинт, но он даже конект не делает, может кто подскажет в чем моя ошибка.
Кстати вот содержание ClientMsg :

GET http://www.microsoft.com/isapi/redir.dll?prd=ie&pver=6&ar=msnhomeHTTP/1.0
Accept: */*
Accept-Language: ru
Cookie: MC1=GUID=fe7348d142c91b40a26bf562220e9b88&HASH=d148&LV=200611&V=3; MUID=BEE4C539D05442C7907EBB76CBA42D4C; WT_FPC=id=82.200.227.194-3914840032.29820858:lv=1164137504625:ss=1164137204375; A=I&I=AxUFAAAAAAAvCAAAnEZp2o9I7aQf9fqcg70spw!!
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)
Host: www.microsoft.com
Proxy-Connection: Keep-Alive


jiny   (2007-02-21 14:53:00) [21]

Вот начальный контент сервера

HTTP/1.1 302 Moved Temporarily
Server: tns-counter.0.3.1
Date: Wed, 21 Feb 2007 11:50:16 GMT
Content-Type: image/gif
Content-Length: 43
Location: http://www.tns-counter.ru/V13b****mail_ru/ru/CP1251/tmsec=mail_main/
Connection: close
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
P3P: policyref="/w3c/p3p.xml", CP="NOI DSP COR NID CUR OUR NOR"
Expires: Thu, 01 Jan 1970 00:00:01 GMT
Pragma: no-cache
Set-Cookie: gsid=8DFC030045DC31F845DC3900; path=/


вот что идет после :
GIF89a\x1


SlymRO   (2007-02-21 14:50:00) [22]

Reindeer Moss Eater ©   (21.02.07 14:47) [25]
Если её там нет, читать ответ надо до дисконнекта

Он читает ReadLn'ом :) в т.ч. и картинки :)!


Reindeer Moss Eater   (2007-02-21 14:47:00) [23]

В ответе сервера, от которого ты избавился, есть длина передаваемого после заголовка контента. Если её там нет, читать ответ надо до дисконнекта.


jiny   (2007-02-21 14:38:00) [24]

Прокси заработало, как теперь загрузить с сервера весь остальной контент
от послания сервера до первой пустой строки избавился, но весь остальной контент получаю не до конца, а потом как быть с рисунками, их же тоже надо, я так понимаю кэшировать и передавать потоком. ?
Вобщем на ya.ru заходит, ессно без рисованой буквы "Я", поиск делает, но остальные сайты где есть рисунки, а их великое множество грузит не до конца. Как быть ?


jiny   (2007-02-21 14:10:00) [25]

Слушай, а ты был прав, сразу после сенда сделал ReceiveLn и в принципе получил ответ сервака, УРА !!!! Спасибо всем , но я не прощаюсь :)


jiny   (2007-02-21 13:59:00) [26]

Извини, blocлMode забыл обратно в BmBlocking установить, трассировщиком увиделЮ что запрос уходит, брейк-поинт показал что срабатывает событие OnSend, но OnReceive никак не получаю


jiny   (2007-02-21 13:53:00) [27]

Извини за дежавю, но TcpClient опять не подключается, вот
код, попробовал HostName заменить на явно 'www.microsoft.com', порт 80,
но он собака опять не подключается, ты был прав, запрос не отсылается по этой причине.


Reindeer Moss Eater   (2007-02-21 13:48:00) [28]

А вообще такие опыты удобнее и проще производить в блокирущем режиме синхронными методами.

Writeln(реквест);
repeat
ReadLn(респонс);
until <конец>


Reindeer Moss Eater   (2007-02-21 13:40:00) [29]

Если реквест правильный, но на него нет ответа, значит реквест не был послан.
Отладчик?


jiny   (2007-02-21 13:26:00) [30]

TcpClient1.RemoteHost:=TmpHostName;
 TcpClient1.RemotePort:='80';

if TcpClient1.Connect then
    TcpClient1.Sendln(s+#13#10);
 tmpContentIn.Free;
где s - заголовок, завершающийся на CRLF, TmpHostName - имя хоста , из пункта 'Host: '
все равно нет отклика


jiny   (2007-02-21 13:10:00) [31]

Dmitrij_K   (21.02.07 13:03) [16]
Да, невнимателен я... учту, спасибо, сейчас попробую,

Reindeer Moss Eater ©   (21.02.07 13:03) [15]
ну это другое дело


Dmitrij_K   (2007-02-21 13:03:00) [32]

см. [2]


Reindeer Moss Eater   (2007-02-21 13:03:00) [33]

И это верно.


jiny   (2007-02-21 13:02:00) [34]

Reindeer Moss Eater ©   (21.02.07 12:51) [12]
да никто и не кричал, просто не хочу раздувать экзешник, ну а где в Indy, т.е. в каком модуле смотреть, может хватит вставать в позу и отбросить все принципы, кстати говоря мой пост о том чего не стоит предлагать никак не пересекается с завершением заголовка. И если я тебя обидел этим постом, прошу прощения, но ничего обидного я не имел в виду, просто не хотелось бы работать с INDY, мне важно понять суть а не всунуть компоненту на форму и завершить проект.


Reindeer Moss Eater   (2007-02-21 13:02:00) [35]

> прочитал, что синтаксис завершения запроса : CRLF,


Reindeer Moss Eater   (2007-02-21 12:51:00) [36]

Все еще нет завершенного заголовка запроса.

Может не надо было кричать "того не предлагать, сего не предлагать", а заглянуть в исходники того же Indy?


jiny   (2007-02-21 12:48:00) [37]

Зашел http://ru.wikipedia.org/wiki/HTTPпрочитал, что синтаксис завершения запроса : CRLF, насколько я понял это #13+#10или #$D#$A, получилось это
'GET /isapi/redir.dll?prd=ie&pver=6&ar=msnhome HTTP/1.0'#$D#$A
'Accept: */*'#$D#$A
'Accept-Language: ru'#$D#$A
'Cookie: MC1=GUID=fe7348d142c91b40a26bf562220e9b88&HASH=d148&LV=200611&V=3; MUID=BEE4C539D05442C7907EBB76CBA42D4C; WT_FPC=id=82.200.227.194-3914840032.29820858:lv=1164137504625:ss=1164137204375; A=I&I=AxUFAAAAAAAvCAAAnEZp2o9I7aQf9fqcg70spw!!'#$D#$A
'User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)'#$D#$A
'Host: www.microsoft.com'#$D#$A
'Proxy-Connection: Keep-Alive'#$D#$A
строки вынуты из WatchList
все еще нет результата


Dmitrij_K   (2007-02-21 12:34:00) [38]

http://ru.wikipedia.org/wiki/HTTP


Reindeer Moss Eater   (2007-02-21 12:19:00) [39]

Ну подумай. Ты ж сам хотел.
Если заголовок может быть многострочным, то как дать понять серверу, что ему передана последняя строка.


jiny   (2007-02-21 12:15:00) [40]

>>Reindeer Moss Eater ©   (21.02.07 12:02) [7]
может подскажешь как его закончить ?


Страницы:   1 2 3

Наверх

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