Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Запрос POST + Socket [D6, WinXP]


Beginer1 ©   (2003-08-22 10:44:00) 

Уважаемые мастера помогите
есть одна страницас авторизацй :







делаю такой запрос :

ClientSocket1.Socket.SendText(POST /login.php HTTP/1.1+#10);
ClientSocket1.Socket.SendText("Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*"+#10);
ClientSocket1.Socket.SendText("Accept-Language: ru"+#10);
ClientSocket1.Socket.SendText("Host: www.kakoitohost.ru"+#10);
ClientSocket1.Socket.SendText("Connection: Keep-Alive"+#13);
ClientSocket1.Socket.SendText("login=mylogin&password=MyPassw");
ClientSocket1.Socket.SendText (#10+#13+#10+#13);

ответ :

HTTP/1.1 400 Bad Request
Date: Fri, 22 Aug 2003 06:30:39 GMT
Server: Apache/1.3.27 (Unix) mod_ssl/2.8.12 OpenSSL/0.9.7a mod_fastcgi/2.2.12
Connection: close
Transfer-Encoding: chunked
Content-Type: text/html; charset=iso-8859-1

Your browser sent a request that this server could not understand.
Request header field is missing colon separator.

login=mylogin&password=MyPassw


Verg   (2003-08-30 08:38:00) [1]


> Beginer1 ©


Еще раз говорю:


> functionTCustomWinSocket.SendText(const s: string): Integer;


Как думаешь, зачем она function?
Очевидно, затем, что она может возвращять результаты своей работы типа Integer. Анализировать эти результаты кто будет? Пушкин?


Beginer1   (2003-08-29 05:28:00) [2]

>Verg ©
Да и вообще :))
Если сокет асинхронный, то...

???


Verg   (2003-08-23 14:55:00) [3]

Да и вообще :))
Если сокет асинхронный, то...

function TCustomWinSocket.SendText(const s: string): Integer;

Понимаешь, он может вернуть WSAEWOULDBLOCK.
В этом случае надо отложить дальнейшую передачу до возникновения FD_WRITE...


Anatoly Podgoretsky   (2003-08-23 14:55:00) [4]

А вот это еще более странно
ClientSocket1.Socket.SendText("Host: www.kakoitohost.ru"+#10);
ClientSocket1.Socket.SendText("Connection: Keep-Alive"+#13);
То в лес, то в поле


Verg   (2003-08-23 14:51:00) [5]

Кстати для значений полей в ContenString (вдс ST) надо проделать HttpEncode. Т.е. заменить, если есть, спецсимполы на %cc (cc - код спецсимвола)


Verg   (2003-08-23 14:48:00) [6]

Var St : string;
St:="login=mylogin&password=MyPassw";
ClientSocket1.Socket.SendText(POST /login.php HTTP/1.0+#13#10);
ClientSocket1.Socket.SendText("Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*"+#13#10);
ClientSocket1.Socket.SendText("Accept-Language: ru"+#13#10);
ClientSocket1.Socket.SendText("Host: www.kakoitohost.ru"+#13#10);
ClientSocket1.Socket.SendText("Connection: Keep-Alive"+#13#10);
ClientSocket1.Socket.SendText("Content-Length: "+IntToStr(Length(St))+#13#10#13#10);
ClientSocket1.Socket.SendText(St);


panov   (2003-08-22 22:24:00) [7]

Несколько способов:
1. Использовать компонент TServerSocket, в нем смтреть поученную информацию.
2. Воспользоваться готовыми компонентами.
3. Установить сервер(напр. Apache), написать CGI и отлаживать совместно.

PS.
Кстати, необязательно посылать данные методом POST, можно использовать и GET.


Beginer1   (2003-08-22 22:16:00) [8]

>panov

и как это сделать???


panov   (2003-08-22 21:36:00) [9]

Ну теперь нужно проверить на стороне сервера, какие данные он получает...


Beginer1   (2003-08-22 20:52:00) [10]

>panov

всё равно что то не правильно.
теперь выдаёт ошибку авторизации


panov   (2003-08-22 18:47:00) [11]

Странный разделиель - #10.
Я почему-то думал что используется всегда #13#10


Наверх

Титульная страница Поиск, карта сайта Написать письмо