Текущий архив: 2003.10.23;
Скачать: CL | DM;
Вниз
Запрос POST + Socket Найти похожие ветки
← →
Beginer1 (2003-08-22 10:44) [0]Уважаемые мастера помогите
есть одна страницас авторизацй :
<FORM action="login.php" method="post" name="login" id="login">
<input name="login" type="text" id="login">
<input name="password" type="password" id="password">
<input type="submit" name="submit" value="Вход">
</FORM>
делаю такой запрос :
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
← →
panov (2003-08-22 18:47) [1]Странный разделиель - #10.
Я почему-то думал что используется всегда #13#10
← →
Beginer1 (2003-08-22 20:52) [2]>panov
всё равно что то не правильно.
теперь выдаёт ошибку авторизации
← →
panov (2003-08-22 21:36) [3]Ну теперь нужно проверить на стороне сервера, какие данные он получает...
← →
Beginer1 (2003-08-22 22:16) [4]>panov
и как это сделать???
← →
panov (2003-08-22 22:24) [5]Несколько способов:
1. Использовать компонент TServerSocket, в нем смтреть поученную информацию.
2. Воспользоваться готовыми компонентами.
3. Установить сервер(напр. Apache), написать CGI и отлаживать совместно.
PS.
Кстати, необязательно посылать данные методом POST, можно использовать и GET.
← →
Verg (2003-08-23 14:48) [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);
← →
Verg (2003-08-23 14:51) [7]Кстати для значений полей в ContenString (вдс ST) надо проделать HttpEncode. Т.е. заменить, если есть, спецсимполы на %cc (cc - код спецсимвола)
← →
Verg (2003-08-23 14:55) [8]Да и вообще :))
Если сокет асинхронный, то...
function TCustomWinSocket.SendText(const s: string): Integer;
Понимаешь, он может вернуть WSAEWOULDBLOCK.
В этом случае надо отложить дальнейшую передачу до возникновения FD_WRITE...
← →
Anatoly Podgoretsky (2003-08-23 14:55) [9]А вот это еще более странно
ClientSocket1.Socket.SendText("Host: www.kakoitohost.ru"+#10);
ClientSocket1.Socket.SendText("Connection: Keep-Alive"+#13);
То в лес, то в поле
← →
Beginer1 (2003-08-29 05:28) [10]>Verg ©
Да и вообще :))
Если сокет асинхронный, то...
???
← →
Verg (2003-08-30 08:38) [11]
> Beginer1 ©
Еще раз говорю:
> function TCustomWinSocket.SendText(const s: string): Integer;
Как думаешь, зачем она function ?
Очевидно, затем, что она может возвращять результаты своей работы типа Integer. Анализировать эти результаты кто будет? Пушкин?
Страницы: 1 вся ветка
Текущий архив: 2003.10.23;
Скачать: CL | DM;
Память: 0.46 MB
Время: 0.009 c