Вниз
Скачать: CL | DM;

TClientSocket+HTTP запросы=Вопросы и проблемы   Найти похожие ветки 

 
hacker   (2002-01-01 19:16) [0]

Мастера, доброго времени суток...
Ситуация такая: Я прочитал весь форум, IEFC-Documents: 2068, 1945(HTTP 1.1, 1.0). Нужно послать запрос напрямую в сокет (для скорости - будет часть прокси), поэтому не предлогайте компоненты, и копание в их исходниках(это не совсем понятно).
Я реализовал это на TClientSocket.
//иницилизация не приводится
ClientSocket1.Host:="www.yandex.ru";
ClientSocket1.Service:="http";
// ClientSocket1.Port:=80;
Buf:="GET "+Edit1.Text// там - "/index.html"\\+" HTTP/1.1";
Buf:=TStringList.Create;
ClientSocket1.Open;
Buf.Add("HOST: "+ClientSocket1.Host);
Buf.Add("ACCEPT: */*");
Buf.Add("Pragma: no-cache");
Buf.Add(Cache-Control: no-cache");
ClientSocket1.Socket.SendText(Buf.Text);

Только после того, как я выполню это 2(3) раза, возникает событие OnRead, причем connect=Active , и только после 2(3)раза сервер его разрывает и возвращает, что missing separator colons.
Причем данные отсылаются при каждом клике.

Что за прикол, и как он решается, а лучше приведите реальный и оттестированный код как послать HTTP-запрос.
Вот типа такие проблемы...


 
Ghost. ©   (2002-01-01 20:50) [1]

Я не ртаботал с ClientSocketя использую дртугие сокетные компоненты но тут видимо тоже джолжно работать. Я только сделал прогу отрправки СМС тоже запртос делал сам
На какоенибудь событие (какое тебе надо)
CliSocket.Proto := "tcp";
CliSocket.Port :="80";
CliSocket.Addr :="www.mts.ru";
CliSocket.Connect;
а потом на событие
OnConnect уже CliSocket.SendStr(memo1.Text + #13 + #10);
пертд этим фортмирую сам запрос
memo1.Lines.Add("GET /тут че тебе надо+" HTTP/1.0");
memo1.Lines.Add("Accept: */*");
memo1.Lines.Add("Referer: http://www.mts.ru/");
memo1.Lines.Add("Accept-Language: ru");
memo1.Lines.Add("Accept-Encoding: gzip, deflate");
memo1.Lines.Add("User-Agent: Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)");
memo1.Lines.Add("Host: www.mts.ru");
memo1.Lines.Add("Proxy-Connection: Keep-Alive");
и все четко ртаботает....


 
hacker ©   (2002-01-01 21:27) [2]

GHOST, твой вариант работает. У себя я нашел 2 ошибки:
1) надо лучше читать IEFC - в конце запроса #13#10
2) видно, когда ClientSocket.open и SendText стоят вместе, получается что запрос улетает в еще не открытый сокет (по крайней мере я так думаю).
бОльшое спасибо...


 
Ghost. ©   (2002-01-01 21:31) [3]

Всегда пожалуйста :0)



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.005 c
1-57374
Vvedensk
2002-03-04 05:46
2002.03.18
Как вставить в edit каких-то 3 переменных ....


1-57431
ev
2002-03-02 21:22
2002.03.18
BPL


1-57455
AndreyB
2002-03-02 20:52
2002.03.18
TrichEdit


14-57501
HDD
2002-02-02 17:25
2002.03.18
Помогите пожалуйста!


3-57331
boogier
2002-02-18 18:06
2002.03.18
Как заставить ADO использовать индексы




   Наверх