Поле заголовка HTTP может быть многозначным. Например, в поле Cookie: клиентского запроса могут содержаться все данные cookie, назначенные клиенту сервером. Значения многозначных полей можно устанавливать, используя в качестве параметра ссылку на массив или передавая строку, в которой значения разделены запятыми. В следующем примере устанавливается поле Accept:, представляющее собой многозначный список типов MIME, которые готова принять клиентская программа.
Иным образом, для установки значений многозначных полей можно использовать метод push_header (), описанный ниже.
$request->push_header ($field => $value)
Метод push_header () добавляет указанное значение к концу поля, создавая его, если оно не существует, и преобразуя в многозначное, если оно является однозначным. Параметр $value, может представлять собой скаляр или ссылку на массив.
$request->remove_header (@fields)
Метод remove_header () удаляет указанные поля.
Ряд методов, перечисленных ниже, предоставляет удобные средства для работы с полями заголовка. Следующие три метода позволяют устанавливать и изучать информационное наполнение одного запроса.
$request->content ([$ content] )
$request-> content_ref
Метод content ( ) устанавливает информационное наполнение исходящего запроса. При вызове без параметра он возвращает текущее значение информационного наполнения, если оно имеется. Метод content_ref () возвращает ссылку на информационное наполнение и может применяться для непосредственной манипуляции этим информационным наполнением.
При отправке запроса из заполняемой формы на динамическую Web-страницу с помощью метода post, метод content () служит для установки строки запроса и вызывает метод content_type () для установки значения параметра mime type, равного application/x-www-form-urlecoded или multipart/form-data.
Можно также создавать информационное наполнение динамически, передавая методу ссылку на фрагмент кода, который возвращает информационное наполнение. Библиотека повторно вызывает указанную подпрограмму до тех пор, пока она не возвратит пустую строку. Данное средство удобно для передачи запросов по методу put на FTP-серверы и запросов по методу POST на почтовые серверы и серверы службы новостей, например, для поиска статей по теме - Лучшие планшеты Мира. Однако его неудобно использовать с IP-серверами, поскольку поле Content-Length: должно быть заполнено еще до отправки заголовков. Если длина динамически создаваемого информационного наполнения известна заранее, то длину этого поля можно установить с использованием метода content_length ().
$request->scan(&sub)
Метод scan (перебирает в цикле все поля заголовка HTTP, вызывая подпрограмму, ссылка на которую задана параметром &sub. Указанная подпрограмма вызывается с двумя параметрами, состоящими из имени поля и его значения. При обработке многозначных полей эта подпрограмма вызывается для каждого значения.
Эти методы принадлежат к семейству, состоящему из 19 вспомогательных методов, которые позволяют получать и устанавливать значения наиболее часто применяемых однозначных полей. При вызове без параметра они возвращают текущее значение поля, а при вызове с одним параметром останавливают значение поля. В методах, предусматривающих работу с датами, применяется системный формат времени, аналогичный возвращаемому функцией time ().