Главная страница
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.05 c
3-1141048241
Supklo
2006-02-27 16:50
2006.04.23
Как подключиться к Transbase


15-1143469715
Shweps
2006-03-27 18:28
2006.04.23
Документация


15-1143725315
oldman
2006-03-30 17:28
2006.04.23
Никто не знает, как работает обновление DirectX?


4-1138861748
Fay
2006-02-02 09:29
2006.04.23
Службы, SERVICE_CONTROL_SHUTDOWN


8-1132137370
artyonkil
2005-11-16 13:36
2006.04.23
Форматирование и нумерация строк