Простой случай (небольшой объём данных переменных)

Чаще всего клиент присылает довольно мало данных переменных, и все они умещаются в 255 байт. В этом случае используйте свойство только чтение sock.httprqstring, как показано в примере ниже. Допустим, нужно выполнить вход в систему. Пользователь вводит имя и пароль на странице "index.html", а сам вход обрабатывается на странице "login.html". Данные передаются между этими двумя страницами "невидимо", методом HTTP POST.

Вот файл "index.html":

<html> <body>
	<form action="form_get.html" method="post" enctype="multipart/form-data">
		username: <Input Type="text" name="user"><br>
		password: <Input Type="password" name="pwd"><br>
		<Input Type="submit" value="send">
	</form>
</body> </html>

А вот "login.html":

<html><body>
	<?
		dim s as string
		s=sock.httprqstring
		'actual processing here, s now contains the variable string
	?>
</body></html>

Раздел Подробности о данных переменных объясняет, что именно возвращает свойство sock.httprqstring.

Преимущество sock.httprqstring в том, что данные переменных всегда на месте, сколько бы раз вы их ни читали.

Внимание

Если вы используете sock.httprqstring, а клиент присылает больше данных, чем помещается в буфер VAR, обработка HTTP-запроса зависнет на неопределённое время. Как справиться с этим правильно, см. в разделе Сложный случай (большой объём данных переменных).

Поясним, почему сокет может застрять. На следующей схеме подробно показан ход обработки HTTP-запроса и ответа:

Схема, иллюстрирующая ход обработки HTTP-запроса и ответа.

Как видно из схемы, сокет автоматически извлекает данные переменных и сохраняет их в буфере VAR. Приведённый выше пример обращается к буферу на этапе ответа, из страницы "login.html". Проблема в том, что обработка может до него и не дойти. Если буфер VAR переполнится на этапе обработки запроса, сокет будет просто ждать, и этап ответа никогда не начнётся! Это верно для любого метода HTTP - GET или POST. Читайте дальше, и мы расскажем, как этого избежать.

Исходный материал Tibbo обновлён 11 августа 2022Оригинал на docs.tibbo.com · Сообщить об ошибке