Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   www.boolean.name > Программирование игр для мобильных телефонов > MidletPascal > Библиотеки

Ответ
 
Опции темы
Старый 10.01.2008, 19:14   #1
Piligrim
Оптимист
 
Регистрация: 07.01.2006
Сообщений: 961
Написано 105 полезных сообщений
(для 259 пользователей)
Lib_web: работа с http, корректная обработка POST

Была написана как раз для корректной обработки POST запросов.

01.08.2008
+добавлена функция function get_stream : resource;
Возвращает входной поток от сервера. Вызывается только после send!

03.01.2009
*изменил процесс подключения. Происходит в отдельном потоке, можно прервать. Подробности смотрим в примере. Для тех кому это не нужно оставил первоначальную версию.
Вложения
Тип файла: zip web.zip (2.5 Кб, 588 просмотров)
Тип файла: zip web2.zip (11.9 Кб, 570 просмотров)

Последний раз редактировалось Piligrim, 03.01.2009 в 22:39.
(Offline)
 
Ответить с цитированием
Эти 3 пользователя(ей) сказали Спасибо Piligrim за это полезное сообщение:
liery (03.03.2009), odd (08.05.2009), Rock2roll (09.06.2011)
Старый 25.01.2008, 15:47   #2
fads
Оператор ЭВМ
 
Регистрация: 08.03.2007
Сообщений: 20
Написано одно полезное сообщение
Ответ: Lib_web: работа с http, корректная обработка POST

А можно пример по использованию?
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
megaxbit (18.12.2008)
Старый 25.01.2008, 18:23   #3
Piligrim
Оптимист
 
Регистрация: 07.01.2006
Сообщений: 961
Написано 105 полезных сообщений
(для 259 пользователей)
Ответ: Lib_web: работа с http, корректная обработка POST

К сожалению полный пример не сохранился, но получается что-то похожее:
program Http;
uses web;
begin
	if web.open('http://tut.by')=-1 then
		debug('1');
	debug(web.get_name(0));
	debug(web.get_name(1));
	debug(web.get_name(2));
	drawText('Hello world!', 0, 0);
	repaint;	
	delay(2000);
end.
(Offline)
 
Ответить с цитированием
Старый 25.01.2008, 18:53   #4
cHeRsAnYa
ПроЭктировщик
 
Регистрация: 18.12.2007
Сообщений: 157
Написано 24 полезных сообщений
(для 27 пользователей)
Ответ: Lib_web: работа с http, корректная обработка POST

А POST запросы как отправлять?
(Offline)
 
Ответить с цитированием
Старый 26.01.2008, 08:40   #5
Piligrim
Оптимист
 
Регистрация: 07.01.2006
Сообщений: 961
Написано 105 полезных сообщений
(для 259 пользователей)
Ответ: Lib_web: работа с http, корректная обработка POST

program SmsSender;
uses sms, web, ui;
var
	conn: http;
	dest_id, text_id, id, res: integer;
	dest, text: string;
	cmd, cmdHttp, cmdSms, cmdExit, cmdSelect, cmdCancel: command;
procedure showError(error: string);
begin
	showAlert('Error', 'sending incomplete: '+error, loadImage('/icon.png'), ALERT_ERROR);  					
	delay(3000);
end;
procedure getCommand;
begin
	cmd:= EmptyCommand;
	repeat 
		cmd := GetClickedCommand; 
	until cmd <> EmptyCommand; 
end;
function getSms(title: string; dst: string): boolean;
begin
	ClearForm;
	ShowForm;
	SetFormTitle(title);
	dest_id:= FormAddTextField('Dest number', dst, 20, TF_PHONENUMBER); 
	text_id:= FormAddTextField('SMS text', '', 450, TF_ANY); 
	AddCommand(cmdCancel);
	AddCommand(cmdSelect);
	getCommand;
	if cmd=cmdSelect then begin
		dest:= FormGetText(dest_id);
		text:= FormGetText(text_id);
	end;
	getSms:= cmd=cmdSelect;
end;
begin
  cmdExit := CreateCommand('Exit', CM_EXIT, 1); 
  cmdSelect := CreateCommand('OK', CM_OK, 1); 
  cmdCancel := CreateCommand('Cancel', CM_CANCEL, 1); 
	cmd:= EmptyCommand;
	repeat
		ShowMenu('Main menu', CH_IMPLICIT);
		id:= MenuAppendString('SMS');
		id:= MenuAppendString('WebForm SMS');
		id:= MenuAppendString('e-mail to SMS');
		id:= MenuAppendString('e-mail');
		AddCommand(cmdExit); 
		ui.list_set_select_command(cmdSelect);
		getCommand;
		if cmd=cmdSelect then begin
			id:= MenuGetSelectedIndex;
			Debug(IntegerToString(id));
			if id=0 then
				if getSms('Send SMS', '+37529') then begin
					id:= -1;
					if sms.send('sms://'+dest, text)=0 then
						showError('');
				end;
			Debug(IntegerToString(id));
			if id=1 then 
				if getSms('Send WebForm', '37529') then begin
					id:= -1;
					if web.open('http://www.freesms.mts.by/cgi-bin/cgi.exe?function=sms_send')<>0 then begin
						web.set_method('POST');
						res:= 0;
						if web.set_body('MMObjectType=0&MMObjectID=&To='+dest+'&Msg='+text+'&count='+
IntegerToString(Length(text))+'&Hour=0&Min=0&Day=1&Mon=05&Year=2006&Lang=2')<>0 then 
							res:= web.send;
						if res<>200 then
					showError(IntegerToString(res));
						web.close;	
					end;
				end;
		end;	
	until cmd=cmdExit;
end.
например
(Offline)
 
Ответить с цитированием
Старый 11.02.2008, 21:04   #6
Stalk
AnyKey`щик
 
Регистрация: 09.12.2007
Сообщений: 2
Написано 0 полезных сообщений
(для 0 пользователей)
Re: Lib_web: работа с http, корректная обработка POST

Вопрос: На реальном телефоне к заголовку User Agent прибавляется UNTRUSTED/1.0 . Это можно как-то обойти не прибегая к сертификации приложения, ибо очень разная она на всех телефонах.
(Offline)
 
Ответить с цитированием
Старый 12.02.2008, 15:39   #7
ViNT
Модератор
 
Регистрация: 03.04.2007
Сообщений: 2,252
Написано 597 полезных сообщений
(для 817 пользователей)
Ответ: Lib_web: работа с http, корректная обработка POST

Врятли, это скорее всего идет чисто на уровне JVM.
(Offline)
 
Ответить с цитированием
Старый 27.04.2008, 23:52   #8
EVIL_USER
ПроЭктировщик
 
Регистрация: 12.11.2006
Сообщений: 101
Написано 6 полезных сообщений
(для 6 пользователей)
Re: Lib_web: работа с http, корректная обработка POST

Чёйт я туплю, как заголовок то здесь передать?
(Offline)
 
Ответить с цитированием
Старый 30.04.2008, 22:13   #9
EVIL_USER
ПроЭктировщик
 
Регистрация: 12.11.2006
Сообщений: 101
Написано 6 полезных сообщений
(для 6 пользователей)
Re: Lib_web: работа с http, корректная обработка POST

Граждане, чего я не так делаю?
Program icq_test;
uses web;
var
i: integer;
s: string;
  begin 
    i:=web.open('http://wap.wapsib.ru/sajt/icq_mess/index.php');
    debug(''+i);
        
        web.set_method('POST');
        web.set_property('Referer','http://wap.wapsib.ru/sajt/icq_mess/index.php');
        web.set_property('Content-Type','application/x-www-form-urlencoded');
        web.set_property('Content-Length',''+91);        
        
        i:=web.set_body('uin=111111111&text=prevedmedved&send=%D0%9E%D1%82%D0%BF%D1%80%D0%B0%D0%B2%D0%B8%D1%82%D1%8C');
        debug(''+i);
        
        i:= web.send;
    debug(''+i);
    
    s:=get_response;
    debug(s);
        web.close;
  end.
сервак возвращает: "411 Length Required"
Колбасил всё по разному, порядок менял, заголовки добавлял, удалял разные, один хрен, как будто библиотека их не передаёт.
(Offline)
 
Ответить с цитированием
Старый 01.05.2008, 09:00   #10
ViNT
Модератор
 
Регистрация: 03.04.2007
Сообщений: 2,252
Написано 597 полезных сообщений
(для 817 пользователей)
Ответ: Lib_web: работа с http, корректная обработка POST

Похоже должен еще присутствовать параметр Length, наверное это длина сообщения.
Попробуйте в set_body добавить [b]&length=x[b], где x - длина сообщения.
(Offline)
 
Ответить с цитированием
Старый 01.05.2008, 19:00   #11
EVIL_USER
ПроЭктировщик
 
Регистрация: 12.11.2006
Сообщений: 101
Написано 6 полезных сообщений
(для 6 пользователей)
Re: Lib_web: работа с http, корректная обработка POST

Live HTTP header под мозилой вот это перехватывает:
http://wap.wapsib.ru/sajt/icq_mess/index.php

POST /sajt/icq_mess/index.php HTTP/1.1
Host: wap.wapsib.ru
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.8.1.14) Gecko/20080404 Firefox/2.0.0.14
Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Accept-Language: ru,ru-ru;q=0.8,en-us;q=0.5,en;q=0.3
Accept-Encoding: gzip,deflate
Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive
Referer: http://wap.wapsib.ru/sajt/icq_mess/index.php
Content-Type: application/x-www-form-urlencoded
Content-Length: 91
uin=111111111&text=prevedmedved&send=%D0%9E%D1%82%D0%BF%D1%80%D0%B0%D0%B2%D0%B8%D1%82%D1%8C
HTTP/1.x 200 OK
Server: DataPalm/2.5.7
Date: Thu, 01 May 2008 17:55:27 GMT
Content-Type: text/html
Content-Length: 89
Connection: Keep-Alive
Так что длина вроде в заголовке передаётся.

Я просто сперва думал, что set_property это не к хидерам относится, потом посмотрел исходник библиотеки, погуглил - получается всё-таки оно самое.

Последний раз редактировалось EVIL_USER, 01.05.2008 в 19:07.
(Offline)
 
Ответить с цитированием
Старый 29.07.2008, 12:11   #12
Vinni37
AnyKey`щик
 
Регистрация: 16.07.2008
Сообщений: 3
Написано 0 полезных сообщений
(для 0 пользователей)
Ответ: Lib_web: работа с http, корректная обработка POST

У меня тоже проблемма с ответом 411, кто нибудь придумал как обойти?, если да то напишите в аську плиз 192068616
(Offline)
 
Ответить с цитированием
Старый 03.08.2008, 14:35   #13
Skythrone
ПроЭктировщик
 
Регистрация: 02.07.2008
Сообщений: 105
Написано 7 полезных сообщений
(для 14 пользователей)
Ответ: Lib_web: работа с http, корректная обработка POST

pilgrim, я никак не могу победить обновлённую версию библиотеки.

Получаю данные не как stream, а просто через web.get_response;

В старой версии работало, а новая версия выдаёт:
java.io.IOException: unexpected end of stream
(Offline)
 
Ответить с цитированием
Старый 08.08.2008, 07:37   #14
Piligrim
Оптимист
 
Регистрация: 07.01.2006
Сообщений: 961
Написано 105 полезных сообщений
(для 259 пользователей)
Ответ: Lib_web: работа с http, корректная обработка POST

program WebDemo;
uses web;
var
    
integer;
begin
    
if web.open('http://piligrim.wapland.org')<>0 then begin
            a 
:= web.send;
            if 
a<>200 then
                Debug
('answer: '+a);
            
drawText(web.get_response00);
            
web.close;
    
end;
    
repaint;    
    
delay(2000);
end
нормально получает страницу. библиотека не переделывалась, просто добавлена одна функция
(Offline)
 
Ответить с цитированием
Старый 10.08.2008, 17:15   #15
Skythrone
ПроЭктировщик
 
Регистрация: 02.07.2008
Сообщений: 105
Написано 7 полезных сообщений
(для 14 пользователей)
Ответ: Lib_web: работа с http, корректная обработка POST

Да, это действительно был какой-то локальный глюк - то ли меня, то ли эмулятора.
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Lib_proweb - полноценная работа с http! Рабочий POST!!! minibt Библиотеки 22 19.10.2012 09:20
возможна ли в blitz3d корректная работа с русскими символами? DeMoNN Blitz3D 13 23.02.2010 00:22
Работа с http... помогите! Trazzy MidletPascal 15 25.05.2009 07:27
http POST запрос Aluk Основной форум 2 24.09.2007 09:18


Часовой пояс GMT +1, время: 08:15.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com