Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Сети";
Текущий архив: 2002.03.18;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.004 c
1-57354
AlexP
2002-03-01 14:55
2002.03.18
Как просто обрезать число например 6.43734 до 6.43


1-57384
Тот самый Пацан
2002-02-28 23:57
2002.03.18
Как вывести на обратный план Memo, a на передний - Image...


7-57534
Dimius
2001-12-16 20:28
2002.03.18
Окошки!


3-57321
AndrewK
2002-02-19 17:48
2002.03.18
Как составить запрос


14-57522
Юрий Федоров
2002-02-01 14:47
2002.03.18
PopupMenu и санки





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский