Главная страница
    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.013 c
2-1144405937
Максим_86
2006-04-07 14:32
2006.04.23
Поместить иконку на панель задач


3-1141299314
Alex2006
2006-03-02 14:35
2006.04.23
Выбор неверно заведённой информации


2-1143984013
bogdan
2006-04-02 17:20
2006.04.23
задача на перебор


1-1142766204
ho5ok
2006-03-19 14:03
2006.04.23
Socket showmessage( no connection );


2-1144383257
fr
2006-04-07 08:14
2006.04.23
Помогите, пожалуйста с запросом





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