Главная страница
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.49 MB
Время: 0.088 c
1-1142605441
RusGl
2006-03-17 17:24
2006.04.23
Обработка насильственного прерывания консольного приложения.


2-1144268509
Nick_serov
2006-04-06 00:21
2006.04.23
Выполняется только половина.....


15-1143786546
КаПиБаРа
2006-03-31 10:29
2006.04.23
Кто нибудь заказывал книги на


15-1141567010
psa247
2006-03-05 16:56
2006.04.23
Парсинг пути к файлу


15-1144243679
fast2
2006-04-05 17:27
2006.04.23
Чем (кроме, DataBaseDesktop) можна просматривать *.db файлы?