Показать сообщение отдельно
Старый 01.06.2009, 17:31   #1
minibt
AnyKey`щик
 
Регистрация: 27.03.2007
Сообщений: 13
Написано 5 полезных сообщений
(для 29 пользователей)
Смущение Lib_proweb - полноценная работа с http! Рабочий POST!!!

Lib_proweb - работа с http. Перекодировка для русского языка. Возможность загрузки данных в отдельном потоке. Прерывание загрузки с получением загруженной части. Полностью рабочий метод POST!!! Вывод ошибок работы. Кодирование Base64. Распаковка GZIP потоков (сейчас только LZ77).

Для создания, соединения, настройки, закрытия

procedure open(url: String);
Создает соединение с указаным url.

procedure set_property(key, value: string);
Устанавливает свойство key c значением value.

procedure set_method(s: String);
Метод GET или POST

procedure set_body(s: String);
Устанавливает текст запроса для метода POST

function request(): integer;
Устанавливает соединение и возвращает ответ сервера.

function get_field(key: String): string;
Возвращает значение заголовка по названию key от сервера.

function get_fieldvalue(int s): string;
Возвращает значение заголовка по индексу или пустую строку, если индекс превышен.

function get_fieldkey(int s): string;
Возвращает название заголовка по индексу или пустую строку, если индекс превышен.

function get_cookie(): string;
Возвращает ВСЕ cookie одной строкой.

procedure close();
Закрывает соединение, очищает все данные.

Для установленного соединения

function get_data_bg(): integer;
Возвращает значение состояния загрузки данных.
0 - загрузка данных еще продолжается.
1 - загрузка данных окончена. Данные могут быть получены через get_data() или get_stream()

procedure get_data_stop();
Останавливает процесс загрузки данных. Закрывает соединение, а загруженные данные можно получить через get_stream();

function get_stream(): string;
Возвращает значение входного потока. Все данные которые загружены на данный момент.

function get_data(): string;
Ожидает окончания загрузки всех данных и возвращает загруженные данные.
Получение больших данных может занимать много времени, программа будет простаивать, лучше использовать get_data_bg или get_stream.

Легкое соединение!

procedure q_property(key, value: string);
Устанавливает свойство key c значением value для функции q_request.

function q_request(url, method, body, gz: string): integer;
Создает соединение с url, методом method и телом body, вспомогательным параметром gz и возвращает ответ сервера.
Заголовки предварительно установить с помощью q_property.
Параметр gz может иметь слудующие значения:
"gzip" - если сервер поддерживает сжатие, загружает данные в сжатом виде gzip, get_datа вернет распакованные данные, в случае ошибки распаковки ничего.
"auto" - аналогично gzip, но в случае ошибки распаковки автоматически перезагрузить указанный url в несжатом виде.
"none" - используется обычная загрузка без сжатия.
Также автоматически определяет кодировку и перекодирует при возможности входные данные.
Поддерживает UTF-8, и кириллические русские Windows-1251, ISO-8859-5, MacCyrillic, KOI8-R.
Функия поддерживает автоматическую переадресацию.

function q_get_uri(): string;
Возвращает URI соединения, например, в случае переадресации URL. Или пустую строчку.

Вспомогательные

function get_error(): string;
После выполнения процедуры, возвращает описание ошибки, или пустую строчку если нет ошибки.

function gunzip(gz_d: string): string;
Возвращает распакованный архив из строки gz_d.

function gz_ratio(): integer;
После распаковки возвращает степень сжатия.

function str2rs(s: String): resource;
Переводит строчку s в ресурс.

function rs2str(res: resource): string;
Переводит ресурс res в строчку.

function encode(s, e, def: String): string;
Берет строчку s в кодировке e (значения "utf-8", "Windows-1251", "ISO-8859-5","MacCyrillic", "KOI8-R") и возвращает в Unicode.
В случае невозможности перекодировки возвращает строчку def.

function base64_encode(String encoded): string;
Возвращает закодированную строку encoded в формате base64.

function base64_decode(String decoded): string;
Возвращает раскодированную строку decoded в формате base64.

Cм. пример. Метод POST. Подключение к http://forum.boolean.name/ и вход
Возможны и недочеты ошибки, пожелания принимаются.
Вложения
Тип файла: zip Lib_proweb.zip (10.8 Кб, 1501 просмотров)
Тип файла: zip ProWeb_Example.zip (8.2 Кб, 1420 просмотров)

Последний раз редактировалось minibt, 01.06.2009 в 23:12. Причина: Исправлена ошибка ожидания и прерывания загрузки
(Offline)
 
Ответить с цитированием
Эти 21 пользователя(ей) сказали Спасибо minibt за это полезное сообщение:
AVIZO (01.06.2009), Bananbl4 (28.03.2010), boydjon (16.07.2010), Bruteo (29.09.2009), Egor Rezenov (19.03.2011), german1010 (22.07.2009), GRAY_WOLF (01.06.2009), KiberPUNK (15.03.2012), MedB@T (06.07.2011), MotoMustanger (08.10.2010), neon (25.08.2012), nil0q (14.06.2013), odd (01.06.2009), Phantom (01.07.2009), Piligrim (02.06.2009), Pyth_ON (26.06.2009), Richik (02.06.2009), Rock2roll (05.08.2010), scimitar (20.06.2010), Skythrone (16.06.2009), ViNT (02.06.2009)