![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Запрос 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