forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Библиотеки (http://forum.boolean.name/forumdisplay.php?f=124)
-   -   Lib_proweb - полноценная работа с http! Рабочий POST!!! (http://forum.boolean.name/showthread.php?t=8417)

minibt 01.06.2009 17:31

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/ и вход :)
Возможны и недочеты ;) ошибки, пожелания принимаются.

AVIZO 01.06.2009 23:11

Ответ: Lib_proweb - полноценная работа с http! Рабочий POST!!!
 
Хороший человек :)

Skythrone 01.07.2009 15:26

Ответ: Lib_proweb - полноценная работа с http! Рабочий POST!!!
 
Ну вот совсем никак не распаковывается gzip-ованная строка.
Я уж по-разному пробовал.
Вызываю в мидлете gunzip(string) и получаю "Error in GZip".

Хотя строчка реально правильно запакована в GZip (с помощью стандартных функций PHP).

Не подскажете, в чём может быть проблема?

odd 01.07.2009 17:07

Ответ: Lib_proweb - полноценная работа с http! Рабочий POST!!!
 
Ещё неплохо бы добавить функцию по перекодировке потенциально опасных для MySQL и MS SQL баз данных символов (", ', |, ` и др.). Да и символ & открыто передавать нельзя - это приведет к ошибке. Нужно заменять такие символы на сочетание типа %26 для знака & и т.д.

Phantom 01.07.2009 21:55

Ответ: Lib_proweb - полноценная работа с http! Рабочий POST!!!
 
Цитата:

Ещё неплохо бы добавить функцию по перекодировке потенциально опасных для MySQL и MS SQL баз данных символов (", ', |, ` и др.)
Нее, этим не браузер должен заниматься, а сервер.
Цитата:

Да и символ & открыто передавать нельзя - это приведет к ошибке. Нужно заменять такие символы на сочетание типа %26 для знака & и т.д.
Символ & открыто передавать нельзя. Ещё символ "равно" нельзя. Пробел нужно менять на "плюс", остальные символы не a-z0-9 желательно перекодировать в %xx, но обычно и так прокатывает вроде, гг. А вообще, может джава машина сама это делает?

minibt 01.08.2009 13:11

Re: Ответ: Lib_proweb - полноценная работа с http! Рабочий POST!!!
 
Цитата:

Сообщение от Skythrone (Сообщение 109560)
Ну вот совсем никак не распаковывается gzip-ованная строка.
Я уж по-разному пробовал.
Вызываю в мидлете gunzip(string) и получаю "Error in GZip".

Хотя строчка реально правильно запакована в GZip (с помощью стандартных функций PHP).

Не подскажете, в чём может быть проблема?

Я использовал алгоритм быстрой распаковки LZ77, возможно сервер пакует в LZ78 или другим вариантом, также уже замечено на некоторых телефонах не распаковывает, или я ошибся или реализация java-машин такая на телефонах, попробую исправить, а щас только одно воспользуетесь стронним распаковщиком.

Richik 19.08.2009 00:10

Ответ: Lib_proweb - полноценная работа с http! Рабочий POST!!!
 
Скачиваю с инета статическую картинку, в фотрмате GIF89. Как ее посмотреть на экране?, и можно ли обойтись без сохранения в ее в телефоне?

На экране вот эта картинка " " отображается так:

Код:

GIF89a  жg рстэээшщщчшшццчноп·»Б*±¶Ј©°ъъъщъъёЅГпрс»АЕьььђ•њ›*§і·јуууЋ’™ххцz~†Њђ—x|ѓќЈЄЉЏ–БЕКёјБ»ѕВррт—›ЎҐ©Їґ·»*І№шшщ”™*№ѕГ№»їсстДЕЙуффЇі№¤¦¬лмнЗЙМъъы™ћҐ»їДќЎ¦„€Џ~ѓЉґёѕсту°µ»ёЅВмноµ№ѕІ·Ѕі·ЅЅБЖттуw{ѓ{Ђ‡ъыыщщщ±¶јКОУЅБЗ‚…Њі·»рсс—њЈ‡Њ“±ґ№ффхѕВЗопрГЗЛћ¤¬—›ўЁ*ґежи°ґ№“—ћ*¦**Ґ«ѓ€Џ€Њ“стттуу±µ»©*І}‚‰ТУЦ*°¶ђ•›ннпыыы·јВєѕДИМРҐ«Іяяяяяя                                                                        !щ  g ,       іЂ]M$63ZRI,-ggd’““B^4Џ
c›њњ
 ЏKf¤Ґ¦ &ЏCf!T.G#0';f P bїАї O/»NeИЙКfL9¦СfS8f Af"YF+Qf_Ef5f       
(X f%[UfaaлJ fЏnи0 Ђѓ        Ђи3sеQЃ
в Ј@Ђ™ЏАђfЉИ#d@bE.фP ;


<-TzX-> 19.08.2009 14:40

Ответ: Lib_proweb - полноценная работа с http! Рабочий POST!!!
 
Вложений: 1
Цитата:

Сообщение от Richik (Сообщение 115147)
Скачиваю с инета статическую картинку, в фотрмате GIF89. Как ее посмотреть на экране?, и можно ли обойтись без сохранения в ее в телефоне?

На экране вот эта картинка " " отображается так:

Код:

GIF89a  жg рстэээшщщчшшццчноп·»Б*±¶Ј©°ъъъщъъёЅГпрс»АЕьььђ•њ›*§і·јуууЋ’™ххцz~†Њђ—x|ѓќЈЄЉЏ–БЕКёјБ»ѕВррт—›ЎҐ©Їґ·»*І№шшщ”™*№ѕГ№»їсстДЕЙуффЇі№¤¦¬лмнЗЙМъъы™ћҐ»їДќЎ¦„€Џ~ѓЉґёѕсту°µ»ёЅВмноµ№ѕІ·Ѕі·ЅЅБЖттуw{ѓ{Ђ‡ъыыщщщ±¶јКОУЅБЗ‚…Њі·»рсс—њЈ‡Њ“±ґ№ффхѕВЗопрГЗЛћ¤¬—›ўЁ*ґежи°ґ№“—ћ*¦**Ґ«ѓ€Џ€Њ“стттуу±µ»©*І}‚‰ТУЦ*°¶ђ•›ннпыыы·јВєѕДИМРҐ«Іяяяяяя                                                                        !щ  g ,      іЂ]M$63ZRI,-ggd’““B^4Џ
c›њњ
 ЏKf¤Ґ¦ &ЏCf!T.G#0';f PbїАїO/»NeИЙКfL9¦СfS8fAf"YF+Qf_Ef5f       
(Xf%[UfaaлJ fЏnи0 Ђѓ        Ђи3sеQЃ
вЈ@Ђ™ЏАђfЉИ#d@bE.фP ;


Есть либа для показа изображений не из ресурса, а "по-ссылке". Тебе нужно использовать ее для корректного отображения картинки

IvanSCM 07.02.2010 17:29

Ответ: Lib_proweb - полноценная работа с http! Рабочий POST!!!
 
на сервер не передаются параметры, что GET что POST

Код:

program NewProject3;
uses proweb;
var itemId, rc, id : integer;
    cmdNext : command;
    cmdQuit : command;
    name, str : string;

begin
  ShowForm;
   
  itemId := FormAddTextField('Введите текст:', '', 20, TF_ANY);
   
  cmdNext := CreateCommand('Готово', CM_OK, 1);
  AddCommand(cmdNext);
   
  repeat until GetClickedCommand = cmdNext;
   
  name := FormGetText(itemId);

        ClearForm;
        ShowForm;
       
        id:= FormAddString('Ждите посылка запроса...');
        q_property('Accept', '*/*');
q_property('Accept-Language', 'ru');
q_property('Content-Type', 'application/x-www-form-urlencoded');
 
rc:=q_request('http://talk.servehttp.com', GET, 'foo=bar&name=' + name, 'none');
if get_error='' then str:=get_data;
if get_error=''
      then begin
                                          id:= FormAddString('Ответ: '+ str);
                                        end;
                  else id:= FormAddString(' Ошибка: '+get_error);
close;

  cmdQuit := CreateCommand('Выход', CM_EXIT, 1);
  AddCommand(cmdQuit);
  repeat until GetClickedCommand = cmdQuit;
 
  end.


cherepets 07.02.2010 22:05

Ответ: Lib_proweb - полноценная работа с http! Рабочий POST!!!
 
русские буквы и часть символов нельзя передать, нужно их кодировать, может в этом дело?

IvanSCM 08.02.2010 09:18

Ответ: Lib_proweb - полноценная работа с http! Рабочий POST!!!
 
даже если составить запрос:
Код:

rc:=q_request('http://talk.servehttp.com', GET, 'foo=bar', 'none');
параметры не приходят...

cherepets 08.02.2010 09:21

Ответ: Lib_proweb - полноценная работа с http! Рабочий POST!!!
 
если ты ГЕТ используешь, то можно и без библиотеки, просто к адресу прибавляешь ?foo=bar

IvanSCM 08.02.2010 10:01

Ответ: Lib_proweb - полноценная работа с http! Рабочий POST!!!
 
аха GET, POST. гет я поставил для примера, а так мне нужно будет передавать много русского текста и будет POST. но он тоже не работает...

а какой функцией кодировать?

cherepets 08.02.2010 22:05

Ответ: Lib_proweb - полноценная работа с http! Рабочий POST!!!
 
вроде кто-то писал какие-то библиотеки, но лично я советую просто посмотреть как это делает браузер и сделать самому также)) (% рисовать)

Demon_12 09.02.2010 02:25

Ответ: Lib_proweb - полноценная работа с http! Рабочий POST!!!
 
Я вот посмотрел как делает браузер. Все поля повторил. возвращает код 411 Length Request.
Но я же явно выставляю
web.set_property('Content-Length','90');

Demon_12 09.02.2010 02:28

Ответ: Lib_proweb - полноценная работа с http! Рабочий POST!!!
 
Ссори либы перепутал, правда с proweb Тоже не получилось.

alexdfry 22.03.2010 15:53

Ответ: Lib_proweb - полноценная работа с http! Рабочий POST!!!
 
добрый день, я довольно таки недавно начал заниматься, не могли бы привести пример простейшего гет заброса?
в котором указан ключ и формат о_О

MotoMustanger 08.10.2010 21:37

Ответ: Lib_proweb - полноценная работа с http! Рабочий POST!!!
 
Хорошая библиотека, мног функций. Но к сожалению нету поддержки одновременных соединений (или я не нашел), при использовании одновременных запросов в lib_thread попросту виснет. в МП для этого можно указывать номер id соединения
PHP код:

if not OpenHttp(idServerthen SetFormTitle('Error!');
SetHttpMethod(idGET);
if 
SendHttpMessage(id) <> 200 then SetFormTitle('Error2!');
closeHttp(id); 


KeipL 01.11.2010 02:15

Ответ: Lib_proweb - полноценная работа с http! Рабочий POST!!!
 
Судя по всему проблемы с работой https. Библиотека его не поддерживает, или это все же моя недоработка?

ViNT 02.11.2010 01:58

Ответ: Lib_proweb - полноценная работа с http! Рабочий POST!!!
 
Насколько я помню, за https в j2me отвечает отдельный пакет.

Marcus 07.02.2011 15:50

Ответ: Lib_proweb - полноценная работа с http! Рабочий POST!!!
 
а для url кодирования надо самому функцию писать?

KiberPUNK 15.03.2012 19:38

Ответ: Lib_proweb - полноценная работа с http! Рабочий POST!!!
 
Да, было бы очень хорошо, если бы в либу добавили функции urlencode и urldecode. В самой Жаве они, насколько мне известно, уже реализованы...

Deport 19.10.2012 13:20

Ответ: Lib_proweb - полноценная работа с http! Рабочий POST!!!
 
Ребята выручите пожалуйста помогите составить отправку файла на сайт вот по этим параметрам
Код:

Request URL:http://m.megafonpro.ru/ga?utmac=MO-28391975-1&utmn=1616741717&guid=ON&utmp=http%3A%2F%2Fm.megafonpro.ru%2Fml%2Ffile%2Fupload%3Fc=file%26m=upload%26owner_id=1492312%26selected_tab=0&utmr=http%3A%2F%2Fm.megafonpro.ru%2F%2Ffile%2Fview_list%3Fc=file%26m=view_list%26owner_id=1492312
Request Method:GET
Status Code:200 OK (from cache)
Request Headersview source
Accept:*/*
Accept-Charset:windows-1251,utf-8;q=0.7,*;q=0.3
Accept-Encoding:gzip,deflate,sdch
Accept-Language:ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4
Connection:keep-alive
Cookie:wbid=ApiUQEx78LGnUcUwt/ctC6lLGontnRoSlKDUYO+cS907N+zE69AayQHM90+GPWacQWzZ; session_id=6549b342fa6e93bdce2b25febaff28a7; _session_id=68da95d2837aa2a17b1548cd30a1ec32; __utmmobile=0xa4253b46d0cc89c6; _megabanner_session=BAh7CEkiD3Nlc3Npb25faWQGOgZFRkkiJWE1YTQwY2I1YTBiOWEyZjc1NTU3OTk5NTIzYzQ3NjEyBjsAVEkiDGJhbm5lcnMGOwBUeztJIgc3MAY7AFRpDUkiBzYxBjsAVGkMSSIHNTIGOwBUaQ9JIgc1OAY7AFRpDEkiBzc3BjsAVGkKSSIHODIGOwBUaQxJIgc5NQY7AFRpEEkiBzIyBjsAVGkOSSIHNTQGOwBUaQ5JIgc1NwY7AFRpEUkiBzc1BjsAVGkRSSIHODMGOwBUaQtJIgcxMwY7AFRpD0kiBzkwBjsAVGkMSSIHNzYGOwBUaQ9JIgc2MwY7AFRpDEkiBzY4BjsAVGkOSSIHODgGOwBUaRBJIgc3MQY7AFRpCEkiBzMyBjsAVGkQSSIHNTYGOwBUaQ1JIgcxNAY7AFRpDUkiBzQ2BjsAVGkNSSIHMjAGOwBUaQxJIgc4OQY7AFRpDEkiBzM0BjsAVGkPSSIHMjEGOwBUaQ9JIgc0OAY7AFRpDUkiBzYwBjsAVGkLSSIHNDEGOwBUaQ9JIgc3OAY7AFRpC0kiBzgxBjsAVGkOSSIHNjcGOwBUaQtJIgc0MAY7AFRpDEkiBzY2BjsAVGkNSSIHNzIGOwBUaQ1JIgc4MAY7AFRpDUkiBzU1BjsAVGkLSSIHMjMGOwBUaQtJIgc5NAY7AFRpC0kiBzQ3BjsAVGkSSSIHNjkGOwBUaQ1JIgc5MQY7AFRpC0kiBzc5BjsAVGkOSSIHNTkGOwBUaRBJIgc4NgY7AFRpDEkiBzY1BjsAVGkNSSIHMjQGOwBUaRBJIgc3NAY7AFRpC0kiBzYyBjsAVGkMSSIHNDkGOwBUaQ5JIgc3MwY7AFRpDkkiBzY0BjsAVGkOSSIHOTYGOwBUaQlJIhtiYW5uZXJzX2xpbWl0X2xpZmV0aW1lBjsAVGwrB8BfgFA%3D--b20bad921d713f444399b2508fcd42072287ecc6
Host:m.megafonpro.ru
Referer:http://m.megafonpro.ru/ml/?c=file&m=upload&owner_id=1492312&selected_tab=0
User-Agent:Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.4 (KHTML, like Gecko) Chrome/22.0.1229.94 Safari/537.4
Query String Parametersview URL encoded
utmac:MO-28391975-1
utmn:1616741717
guid:ON
utmp:http://m.megafonpro.ru/ml/file/upload?c
utmr:http://m.megafonpro.ru//file/view_list?c
Response Headersview source
Cache-Control:private, no-cache, no-cache=Set-Cookie, proxy-revalidate
Connection:keep-alive
Content-Disposition:attachment
Content-Transfer-Encoding:binary
Content-Type:image/gif
Date:Fri, 19 Oct 2012 08:11:00 GMT
Expires:Wed, 17 Sep 1975 21:32:10 GMT
Keep-Alive:timeout=15
Pragma:no-cache
Server:nginx
Set-Cookie:__utmmobile=0xa4253b46d0cc89c6; path=/; expires=Sun, 19-Oct-2014 08:11:00 GMT
Status:200 OK
Transfer-Encoding:chunked
X-Runtime:0.031718
X-UA-Compatible:IE=Edge,chrome=1










Request URL:http://m.megafonpro.ru/ml/
Request Headersview source
Accept:text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Content-Type:multipart/form-data; boundary=----WebKitFormBoundarymug54qAJMsECz67x
Origin:http://m.megafonpro.ru
Referer:http://m.megafonpro.ru/ml/?c=file&m=upload&owner_id=1492312&selected_tab=0
User-Agent:Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.4 (KHTML, like Gecko) Chrome/22.0.1229.94 Safari/537.4
Request Payload
------WebKitFormBoundarymug54qAJMsECz67x
Content-Disposition: form-data; name="c"

file
------WebKitFormBoundarymug54qAJMsECz67x
Content-Disposition: form-data; name="m"

save_upload
------WebKitFormBoundarymug54qAJMsECz67x
Content-Disposition: form-data; name="sid"

6549b342fa6e93bdce2b25febaff28a7
------WebKitFormBoundarymug54qAJMsECz67x
Content-Disposition: form-data; name="selected_tab"

0
------WebKitFormBoundarymug54qAJMsECz67x
Content-Disposition: form-data; name="file"; filename="vprityk.part67.rar"
Content-Type: application/octet-stream


------WebKitFormBoundarymug54qAJMsECz67x--

уже пол года бьюсь над этой проблемой, выручите пожалуйста


Часовой пояс GMT +4, время: 07:38.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot