назад Alt ←

Пути к файлам и каталогам, работа с HTTP-серверами

Приложение 1.

Для доступа к файлам и каталогам в Parser 3 можно использовать абсолютный или относительный путь.

Абсолютный путь начинается с косой черты /, а файл ищется от корня веб-пространства. Файл по относительному пути ищется от каталога, в котором находится запрошенный документ.

Пример абсолютного пути:

/news/archive/20020127/sport.html

Пример относительного пути:

относительно каталога /news/archive…
20020127/sport.html

При записи файлов необходимые каталоги создаются автоматически.

Корень веб-пространства, переданный веб-сервером, можно изменить: см. «Корень веб-пространства».
Parser 3 преобразует пути к языку file-spec (см. «Внешние и внутренние данные»).

Также методы file::load и table::load могут работать с внешними HTTP-серверами, если имя загружаемого документа содержит префикс http://

Имя домена автоматически подвергается IDNA-кодированию при необходимости (например, при указании кириллического домена). [3.4.4]

Этим методам также можно задать дополнительные опции загрузки документа по HTTP, это хеш, ключи которого описаны в таблице ниже.

Опция По умолчанию Значение
$.charset[кодировка] соответствует $request:charset Кодировка документов на удаленном сервере. В эту кодировку перекодируется строка запроса. Из этой кодировки перекодируется ответ, если в HTTP-ответе сервера не указана кодировка.
Также данная опция доступна и при загрузке локальных текстовых файлов.
Если загружается текстовый файл без указания кодировки и в нем обнаруживается BOM-код, то его содержимое автоматически перекодируется из UTF-8 в текущую кодировку. [3.4.1]
$.response-charset[кодировка] берется из заголовка HTTP-ответа Принудительно указывает, в какой кодировке был получен ответ от сервера. [3.4.4]
$.timeout(секунд) 2 секунды Время ожидания ответа HTTP-сервера в секундах. Операция загрузки должна быть завершена за это время, иначе возникнет ошибка.
$.method[HTTP-МЕТОД] GET Название HTTP-метода должно быть указано в верхнем регистре.
Название метода можно указывать и в нижнем регистре [3.3.1]
$.enctype[CONTENT-TYPE] application/x-www-form-urlencoded Допустимые значения: application/x-www-form-urlencoded или multipart/form-data.
Последнее должно быть использовано вместе с методом POST в случае, если удаленному серверу отправляются файлы. [3.3.1]
$.form[ $.поле[строка] $.поле[файл] $.поле[$таблица] … ] отсутствует Параметры запроса. Для GET запроса они будут переданы в ?строке_запроса. Для запросов с другим method параметры будут переданы с Content-type: application/x-www-form-urlencoded.
Значением может являться строка, таблица из одного столбца или файл. [3.3.1]
Предпочтительно задавать параметры запросам именно при помощи $.form, а не передавать их в ? параметрах самостоятельно.
Однако, можно передавать их и там и там.
$.body[текст] отсутствует Текст тела запроса (нельзя совмещать с form и методом GET)
$.cookies[ $.имя[значение] … ] отсутствует Хеш, содержащий список cookies, которые необходимо передать удаленному HTTP-серверу.
$.headers[ $.HTTP-ЗАГОЛОВОК[значение] … ] $.User-Agent[parser3] Хеш, содержащий дополнительные HTTP-заголовки, которые необходимо передать на HTTP-сервер.
Значением HTTP-заголовка может быть дата, строка или хеш с обязательным ключом value.
Дата может использоваться и в качестве значения поля, и в качестве значения атрибута поля, при этом она будет стандартно отформатирована.
$.any-status(true) false | 0 Логическое: допустим ли статус ответа, не равный 200. Если значение «ложь» и будет получен статус, не равный 200, возникнет системная ошибка HTTP.status.
$.omit-post-charset(true) false | 0 Не добавлять в HTTP-заголовок content-type исходящего POST-запроса информацию о кодировке (по умолчанию добавляется). [3.3.0]
$.response-charset[кодировка] отсутствует Принудительно указать кодировку данных в ответе сервера [3.4.3]
$.user[пользователь] отсутствует Задает параметры запроса к серверу, использующему стандартную HTTP-авторизацию.
$.password[пароль] отсутствует Задает параметры запроса к серверу, использующему стандартную HTTP-авторизацию.

Для ^file::load[…] также можно задать дополнительные опции загрузки, это хеш, ключи которого описаны в таблице ниже.

Опция По умолчанию Значение
$.offset(смещение) 0 Загрузить данные начиная с этого смещения (в байтах).
$.limit(ограничение) -1 Загрузить не более данного количества байтов.