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

Вниз

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

Наверх




Память: 0.46 MB
Время: 0.035 c
4-1138979686
scall
2006-02-03 18:14
2006.04.23
Как узнак к какой группе относится пользователь...


2-1144679604
Дарья
2006-04-10 18:33
2006.04.23
stringgrid


2-1144741622
cosskay
2006-04-11 11:47
2006.04.23
Вывод документа строгой отчетности на печать


10-1117473032
dread
2005-05-30 21:10
2006.04.23
Очистить буфер в Ворде.


3-1141216819
Evyshka
2006-03-01 15:40
2006.04.23
Не открываеться dbf с fpt





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