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

Вниз

Winsock Сформировать Post Запрос   Найти похожие ветки 

 
L0gaN   (2006-03-15 05:55) [0]

Добрый день,
И так необходимо правельно сформировать POST запрос на Winsock, или на Winsock2,
немогли бы вы подсказать как его сформировать это нужно для отправки формы на сайт неважно какой формы.
Пожалуста кто знает приведите пример уже готового сформированого запроса ну там какой порт,хост,реферер,10,13 и.т.д

С get запросом я разобрался но мне нужно именнно Post.
Также не надо предлагать использовать компоненты indy я конечно умею ими пользоваться но для данной цели необходима быстрая скорость работы.


 
Reindeer Moss Eater ©   (2006-03-15 09:49) [1]

но для данной цели необходима быстрая скорость работы.

Да неужели?
И как Indy мешает этому?


 
L0gaN   (2006-03-15 13:00) [2]


> но для данной цели необходима быстрая скорость работы.
>
> Да неужели?
> И как Indy мешает этому?

Не чего против Indy не имею,но мной было замечено что например при отсылки запроса он дольше соединятся с сервером,чем winsock,
проверял я обычным get запросом,и как оказалась на winsock запрос выполнился быстрее,да и в indy иногда форма тормозит даже если есть антифриз,а как в поток его засунуть я незнаю.

Воопщем я нашол немного инфы по этому поводу
Сформировка запроса выглядит так,
Правельно ли я составил запрос ниже?, например надо скрипту send.php передать text=lala&pass=123
Всё ли я правельно составил?

Z:="POST "+http://sait.ru/send.php?text=lala&pass=123+" HTTP/1.0"#13#10+
"User-Agent: OPERA"#13#10+
"Host: sait.ru"#13#10+
"Content-Type: application/x-www-form-urlencoded"#13#10+
"Content-Length: "+Z+#13#10+
"Connection: Keep-Alive"#13#10#13#10


 
Dmitrij_K   (2006-03-15 13:10) [3]

.Host := "sait.ru";
.post := 80;
Send("POST "+/send.php?text=lala&pass=123+" HTTP/1.0"#13#10+...


 
Reindeer Moss Eater ©   (2006-03-15 13:21) [4]

А это что такое:
"Content-Length: "+Z+#13#10+
с учетом того, что Z:="POST "+http://sait.ru/send.php?text=lala&pass=123+" HTTP/1.0"#13#10+

Длина контента это не длина HTTP заголовка.
А длина следующего за заголовком тела POST запроса.
Сам заголовок без явной длины ограничивается двойным CRLF.


 
L0gaN   (2006-03-15 15:27) [5]

Теперь немного я понял значит в заголовок длины контента надо ставить само тело Post запроса, тогда как это будет выглядить на Delphi + Winsock ?

Вот я написал небольшой скриптик для примера на php который правельно отправляет запросик,если возможно покажите как сформировать такой же запрос но на Winsock

<?
$url = "http://www.sait.ru/send.php";
$host = "www.sait.ru";
$port = 80;
$r = 3;
for ($i = 1; $i <= $r; $i++) {
$Z="text=lala&pass=123";
$req .= "POST ".$url." HTTP/1.1\r\n";
$req .= "Host: ".$host."\r\n";
$req .= "Referer: ".$url."\r\n";
$req .= "User-Agent: Mozilla/4.0 (compatible; OPERA 8; Windows NT 5.1)\r\n";
$req .= "Content-Type: application/x-www-form-urlencoded\r\n";
$req .= "Connection: Keep-Alive\r\n";
$req .= "Content-Length: ".strlen($Z)."\r\n";
$req .= "\r\n".$Z;
$s = fsockopen($host, 80);
if (!$s)
{echo "Не могу открыть сокет"; exit;}
else {
fputs($s, $req);
fclose($s);
     }
}
echo
"Сообщений Отправлено=$r";
?>

Как видим в нём в поле контента подсчитываетсся длина запроса потом идёт #13#10#13#10 и прибавляется уже сам запрос в самый конец.

Значит логично предположить что на Winsock запрос будет выглядеть вот так

Telo:="text=lala&pass=123";

Z:="POST "http://sait.ru/send.php" HTTP/1.0"#13#10+
"User-Agent: Mozilla/4.0 (compatible; OPERA 8; Windows NT 5.1)"#13#10+
"Host: sait.ru"#13#10+
"Port: 80"#13#10+
"Referer: http://sait.ru/index.php"#13#10+
"Content-Type: application/x-www-form-urlencoded"#13#10+
"Connection: Keep-Alive"#13#10+
"Content-Length: "+Telo+#13#10#13#10+Telo;

Переменные Telo и Z типа String потом мы просто отправляем Z

Ну теперь я правельно составил запрос? в конец я прибавил само тело после 13 10 13 10 а перед этим я неуверен правильно ли я подсчитал строку?.

Воопщем подскажите правельно ли я сформировал запрос.


 
Reindeer Moss Eater ©   (2006-03-15 16:01) [6]

Теперь немного я понял значит в заголовок длины контента надо ставить само тело Post запроса

Да не тело, а длину тела.


 
L0gaN   (2006-03-16 04:10) [7]

да я немного неправельно сказал, торопился когда писал



Страницы: 1 вся ветка

Форум: "Сети";
Текущий архив: 2006.07.23;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.013 c
2-1151698228
Adil
2006-07-01 00:10
2006.07.23
Открыть ParamStr(1) и не загрузить программу заново.


5-1135878695
doppel
2005-12-29 20:51
2006.07.23
Редактирование компоненты


15-1150971062
IMHO
2006-06-22 14:11
2006.07.23
RSDN.RU


2-1151984358
abcd
2006-07-04 07:39
2006.07.23
про запрос


2-1151820608
Новинький
2006-07-02 10:10
2006.07.23
with do, try, Execute...





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