Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.04.23;
Скачать: CL | DM;

Вниз

HTTP клиент с помощью TClientSocket   Найти похожие ветки 

 
Кефир87 ©   (2006-01-11 02:04) [0]

Мне нечего делать и я решил попробовать написать HTTP клиент. Но столкнулся с проблемой... Для тестирования использую Small HTTP Server. В обработчик ClientSocket"а пишу:

procedure TForm1.ClientSocket1Connect(Sender: TObject;
 Socket: TCustomWinSocket);
begin
 Socket.SendText("GET / HTTP/1.1"#13#10);
 Socket.SendText("Host: 127.0.0.1"#13#10);
 Socket.SendText("User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.0rc2) Gecko/20020512 Netscape/7.0b1"#13#10);
 Socket.SendText("Accept: application/x-shockwave-flash,text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,video/x-mn g,image/png,image/jpeg,image/gif;q=0.2,text/css,*/*;q=0.1"#13#10);
 Socket.SendText("Accept-Language: en-us, en;q=0.50"#13#10);
 Socket.SendText("Accept-Encoding: gzip, deflate, compress;q=0.9"#13#10);
 Socket.SendText("Accept-Charset: ISO-8859-1, utf-8;q=0.66, *;q=0.66"#13#10);
 Socket.SendText("Keep-Alive: 300"#13#10);
 Socket.SendText("Connection: keep-alive"#13#10);
 Socket.SendText("Referer: http://127.0.0.1/"#13#10);
 Socket.SendText("Pragma: no-cache"#13#10);
 Socket.SendText("Cache-Control: no-cache"#13#10);
end;

Для надежности запрос полностью стырил у Netscape. Именно такой запрос от него приходит на сервер.
Делее в обработчике кнопки просто пишу:

procedure TForm1.Button1Click(Sender: TObject);
begin
 ClientSocket1.Close;
 ClientSocket1.Open;
end;

Запрос приходит на сервер в том виде, какой и должен. Но ответа не приходит, ибо сразу после прихода запроса сервер сообщает Error: Connection aborted!

Что я упустил. Искал в яндексе реализацию. Не нашел.


 
Digitman ©   (2006-01-11 09:05) [1]

Какой режим работы клиентского гнезда тобой установлен - ctNonBlocking или ctBlocking ?

Почему не анализируешь результат выполнения вызываемых тобой SendText-методов ?

Где обработка событий OnRead, OnWrite, OnError, OnDisconnect ?


 
Reindeer Moss Eater ©   (2006-01-11 10:09) [2]

Но ответа не приходит

Сервер ждет окончания запроса. У тебя его нет.
Вот и все.

Socket.SendText("Cache-Control: no-cache"#13#10#13#10);


 
Кефир87 ©   (2006-01-11 13:26) [3]


>
> Сервер ждет окончания запроса. У тебя его нет.
> Вот и все.
>
> Socket.SendText("Cache-Control: no-cache"#13#10#13#10);


Спасибо! Вопрос закрыт.


 
Digitman ©   (2006-01-11 13:32) [4]


> Вопрос закрыт


вряд ли закрыт ..

осталось невыясненным, почему connection aborted


 
Кефир87 ©   (2006-01-11 13:41) [5]

Потому что не было окончания запроса... Таймаут может... Главное что теперь все работает и ответ приходит 8) Буду ковыряться дальше 8)


 
Digitman ©   (2006-01-11 14:08) [6]


> Потому что не было окончания запроса


ну и что ?

ну не было его, предположим ... сервер должен ждать это самое "окончание" в пределах тайм-аута ... а у тебя, судя по


> сразу после прихода запроса


кто-то с какого-то перепугу рвет соединение, несмотря на то что запрос передан не целиком


 
Кефир87 ©   (2006-01-11 14:16) [7]

Я понял! Это приходил предидущий запрос! Так-как перед тем как послать новый запрос я обрываю соединение, сервер говорил что оно прервано и отображал ту часть запроса которая до неего доша до обрыва. Вот как 8)


 
Digitman ©   (2006-01-11 14:19) [8]


> Кефир87 ©   (11.01.06 14:16) [7]


ну вот это другой коленкор)



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

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

Наверх




Память: 0.46 MB
Время: 0.017 c
3-1141039240
DimonNew
2006-02-27 14:20
2006.04.23
BeforeUpdateRecord компоненты DataSetProvider


2-1144747235
VAZMan
2006-04-11 13:20
2006.04.23
Options


2-1144298865
Indulf
2006-04-06 08:47
2006.04.23
Как задать массив из БД


2-1144563094
DimDim
2006-04-09 10:11
2006.04.23
Как заблокировать отдельные пункты в ComboBox?


3-1141208401
nap<>
2006-03-01 13:20
2006.04.23
DBLoockupComboBoxEh





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский