Lib_proweb - полноценная работа с http! Рабочий POST!!!
Вложений: 2
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/ и вход :) Возможны и недочеты ;) ошибки, пожелания принимаются. |
Ответ: Lib_proweb - полноценная работа с http! Рабочий POST!!!
Хороший человек :)
|
Ответ: Lib_proweb - полноценная работа с http! Рабочий POST!!!
Ну вот совсем никак не распаковывается gzip-ованная строка.
Я уж по-разному пробовал. Вызываю в мидлете gunzip(string) и получаю "Error in GZip". Хотя строчка реально правильно запакована в GZip (с помощью стандартных функций PHP). Не подскажете, в чём может быть проблема? |
Ответ: Lib_proweb - полноценная работа с http! Рабочий POST!!!
Ещё неплохо бы добавить функцию по перекодировке потенциально опасных для MySQL и MS SQL баз данных символов (", ', |, ` и др.). Да и символ & открыто передавать нельзя - это приведет к ошибке. Нужно заменять такие символы на сочетание типа %26 для знака & и т.д.
|
Ответ: Lib_proweb - полноценная работа с http! Рабочий POST!!!
Цитата:
Цитата:
|
Re: Ответ: Lib_proweb - полноценная работа с http! Рабочий POST!!!
Цитата:
|
Ответ: Lib_proweb - полноценная работа с http! Рабочий POST!!!
Вложений: 1
Цитата:
|
Ответ: Lib_proweb - полноценная работа с http! Рабочий POST!!!
на сервер не передаются параметры, что GET что POST
Код:
program NewProject3; |
Ответ: Lib_proweb - полноценная работа с http! Рабочий POST!!!
русские буквы и часть символов нельзя передать, нужно их кодировать, может в этом дело?
|
Ответ: Lib_proweb - полноценная работа с http! Рабочий POST!!!
даже если составить запрос:
Код:
rc:=q_request('http://talk.servehttp.com', GET, 'foo=bar', 'none'); |
Ответ: Lib_proweb - полноценная работа с http! Рабочий POST!!!
если ты ГЕТ используешь, то можно и без библиотеки, просто к адресу прибавляешь ?foo=bar
|
Ответ: Lib_proweb - полноценная работа с http! Рабочий POST!!!
аха GET, POST. гет я поставил для примера, а так мне нужно будет передавать много русского текста и будет POST. но он тоже не работает...
а какой функцией кодировать? |
Ответ: Lib_proweb - полноценная работа с http! Рабочий POST!!!
вроде кто-то писал какие-то библиотеки, но лично я советую просто посмотреть как это делает браузер и сделать самому также)) (% рисовать)
|
Ответ: Lib_proweb - полноценная работа с http! Рабочий POST!!!
Я вот посмотрел как делает браузер. Все поля повторил. возвращает код 411 Length Request.
Но я же явно выставляю web.set_property('Content-Length','90'); |
Часовой пояс GMT +4, время: 23:42. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot