Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.03.18;
Скачать: 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 вся ветка

Текущий архив: 2002.03.18;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.014 c
1-57403
Слава
2002-03-01 12:05
2002.03.18
Ошибка Access Violation


14-57502
Дмитрий_Б
2002-01-18 15:34
2002.03.18
Работает ли кто-нибудь в электросвязи ?


1-57368
Геральт
2002-03-04 20:55
2002.03.18
Существует ли папка?


3-57277
zver
2002-02-18 11:34
2002.03.18
Как програмно создать DBF таблицу, которую сможет открывать не только bde но и Access, Excel ?


1-57378
ruslan_as
2002-03-01 13:52
2002.03.18
Проверка на корректный ввод чисел