Wap/wml 1 I. Мобилни технологии, Интернет и wap 1



страница10/10
Дата14.01.2018
Размер6.74 Mb.
#46632
1   2   3   4   5   6   7   8   9   10

WAP/WML 12

print "Content-Type: text/vnd.wap.wml\n\n";

print "\n";

print "


print "\"http://www.wapforum.org/DTD/wml_1.1.xml\">\n";

print "\n";

print "
\n";
($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) =

localtime(time); # проверете изхода от функцията time

$DMY = sprintf("%02d.%02d.%02d", $mday, ++$mon, $year+1900);

print "Today is $DMY";

# отпечатайте съдържанието на другите скалари от списъка

print ".


\n";

print "
\n"; print "\n"; print "\n";


2. Библиотека с WWW функции LWP

o LWP – Library for WWW access in Perl – е библиотека с функции за достъп до уеб- съдържание по протоколите http, https, gopher, ftp, news, file и mailto; когато функциите ú не се поддържат от инсталирания интерпретатор, тя може да бъде заредена (заедно с други полезни модули и информация) например от http://www.perl.com/CPAN/ (по-конкретно от http://www.perl.com/CPAN/modules/by- module/LWP/)

o функциите от тази библиотека поддържат механизма заявка-отговор, характерен за НТТР – заявките на браузера, които ползват LWP, се оформят като обект request (от класа HTTP::Request) по синтаксис, напомнящ Java, съответно отговорите на сървера се трансформират също в обектната форма response (от класа HTTP::Responce)

o атрибути на request са method (със стойности GET и POST) и url; атрибут на response e

content

o класът LWP::UserAgent поддържа интерфейса между браузера и WWW сървера и приложението обикновено декларира само един обект от този клас


3. Елементи на обектното програмиране в Perl

o декларация на клас, чиито методи се ползват в програмата, се прави с командата use

в началото на кода:
#! c:\perl\bin\perl use LWP::UserAgent;

o функцията new се ползва като конструктор на нов обект от даден клас, като го присвоява (заедно с методите и атрибутите му) на идентификатор на скалар, след това елементите на обекта са достъпни по обектен идентификатор и етикет на елемента

(метод или атрибут) с разделител оператора ->

o цикълът на запазване на информация от отдалечен сървер се дефинира приблизително по следния шаблон:


$ua = new LWP::UserAgent;

$ua->agent(“MyAgent/0.07”); #creating a network name for the object in its

#property agent
my $req1 = new HTTP::Request’GET’,’http://www.eurorail.com/railsked.htm’;

#the pair of $req1 attributes (method and url) is

#defined during declaration

$req1->content_type(‘application/x-www-form-urlencoded’); #assigning a property my $resp = $ua->request($rec1); #caching the response obtained via the method

#request() in a local scalar open(FN,”>/rail/schedule/today.txt”);

print FN $res->content; #storing the loaded information locally


Стр. 2 от 7

WAP/WML 12

close(FN);



4. Средства за интерактивни приложения в Perl

o в WAP интерактивност се постига като с познатите средства на WML – формите – потребителя се насочва да въведе или избере определени данни, които след това се предават към CGI скрипта за генерация на адекватно съдържание

o за да се даде възможност на потребителя да дефинира собствени стойности на аргументите в WML картата се използват командите и


Message:


скрипт код във файла ex9-12_05.pl:


#!c:\perl\bin\perl

use CGI qw(:standard);

# Form data:

read(STDIN, $save_string, $ENV{CONTENT_LENGTH});

@prompts = split(/&/,$save_string);

foreach (@prompts) {

($tmp1, $tmp2) = split(/=/,$_);

$tmp2 =~ s/\x2b/\x20/g;

$tmp2 =~ s/%2C/\x2c/g;

$tmp2 =~ s/%28/\x28/g;

$tmp2 =~ s/%29/\x29/g;

$fields{$tmp1}=$tmp2;

}

$email = $fields{'email'};



$email =~ s/%(..)/pack("c",hex($1))/ge;

$message = $fields{'message'};

$message =~ s/%(..)/pack("c",hex($1))/ge;
# Email message:

$mailprog = '/usr/bin/sendmail'; # команда за изпращане на майл в ОС

open (MAIL, "|$mailprog -t");

print MAIL "To: $email\n";

print MAIL "From: wapsender\@wapcenter.bg\n";

print MAIL "Subject: WAP\n";

print MAIL "WAP Message:\n";

print MAIL "------------------------------------------------------\n";

print MAIL "$message\n";

print MAIL "------------------------------------------------------\n";

print MAIL "\n";

close (MAIL);


# New WML Document:

print "Content-type: text/vnd.wap.wml\n\n";


print "\n";

print "


print "\"http://www.wapforum.org/DTD/wml_1.1.xml\">\n";
print "\n";

print "\n";

print "
\n";

print "Your message:


\n";

print "\"$message\"


\n";

print "has been sent to:


\n";

print "$email\n";

print "
\n"; print "\n"; print "\n";
o пример 2 – карта за събиране на персонални данни на потребителите и съпоставяне с регистрираните средни стойности (регистрирането на данни изисква права на запис – променете файла при необходимост):

"http://www.wapforum.org/DTD/wml_1.1.xml">




Стр. 4 от 7

WAP/WML 12








Age (Years):







Systolic (mmHg):


Diastolic (mmHg):






скрипт код във файла ex9-12_005.pl


#! c:\perl\bin\perl use CGI qw(:standard);

# Reading from the form

read(STDIN, $save_string, $ENV{CONTENT_LENGTH});

@prompts = split(/&/, $save_string);

foreach (@prompts) {

($tmp1, $tmp2) = split(/=/,$_);

$tmp2 =~ s/\x2b/\x20/g;

$tmp2 =~ s/%2C/\x2c/g;

$tmp2 =~ s/%28/\x28/g;

$tmp2 =~ s/%29/\x29/g;

$fields{$tmp1}=$tmp2;

}

$age = $fields{'age'};



$sex = $fields{'sex'};

$systol = $fields{'systol'};

$diastol = $fields{'diastol'};

# Which file should be opened:

if ($sex eq "Man") { $file = "vman".$age.".dat"; }

else { $file = "vwoman".$age.".dat"; }


# Appending the data to the file:

open(FILE,">>data/$file");

print FILE $age, ":"; print FILE $sex, ":"; print FILE $systol, ":"; print FILE $diastol, ":";

print FILE $ENV{'REMOTE_HOST'}, ":\n";

close (FILE);
# Create new document:

print "Content-type: text/vnd.wap.wml\n\n";


print "\n";

print "


print "\"http://www.wapforum.org/DTD/wml_1.1.xml\">\n\n";
print "\n";

print "\n";

print "
\n";

Стр. 5 от 7




WAP/WML 12

&READ_DATA;


if ($sex eq "Man") { print "Boys"; }

else { print "Girls"; }

print ", ",$age," years.
\n";

print "Your systolic blood pressure is $fields{'systol'}, and";

print " your diastolic ";

print "blood pressure is $fields{'diastol'}.


\n";
print "The average of systolic blood pressure in your age and sex is ";

printf "%0.0f ",$avg1;

print ". The average of diastolic blood pressure in your age and sex is ";

printf "%0.0f ",$avg2;

print". This measurement test in your age and sex has been made by $counter persons.
\n";

print "
\n"; print "\n\n"; print "\n";


# Read data from file:

sub READ_DATA {


$counter = 0; $sum1 = 0; $sum2 = 0;
open(FILE,"data/$file");

while() {

$in_line = $_;

($age, $sex, $sys, $dia, $kone) = split(/:/,$in_line);

$sum1 = $sum1 + $sys;

$sum2 = $sum2 + $dia;

$counter++;
} #END_OF_WHILE_FILE
close(FILE);
# Averages:

$avg1 = $sum1 / $counter;

$avg2 = $sum2 / $counter;
} # END_OF_SUB_READ_DATA
6. Интерфейсни карти в скрипта

o поради необходимостта от съответствие между заявката и функциите на скрипт приложенията, понякога е целесъобразно самото скрипт приложение да генерира WML картата, с която става обръщението към него (т.е. да генерира както картите с отговора, така и картите с формите за заявка)

o възможно е заявката и отговора да бъдат комбинирани в една карта, при което скриптът следи дали е постъпила нова заявка и я обслужва, като актуализира съдържанието на отговора си

o пример – мобилен телефонен указател със съдържание, дефинирано от потребителя; обръщението към скрипта предизвиква генерация и зареждане на карта с таблица за въведените данни – ако има такива – и също (в долната част на екрана) форма за добавяне на нови записи (във файла telmemo.txt); след добавяне на нов запис таблицата се пресортира и картата се зарежда отново чрез “рекурентно” обръщение към същия скрипт (променете кода така че зарежданата таблицата да съдържа само определено от потребителя подмножество записи):


#! c:\perl\bin\perl use CGI qw(:standard);

Стр. 6 от 7



WAP/WML 12

# User input (form data):

read(STDIN, $save_string, $ENV{CONTENT_LENGTH});

@prompts = split(/&/, $save_string);

foreach (@prompts) {

($tmp1, $tmp2) = split(/=/,$_);

$tmp2 =~ s/\x2b/\x20/g;

$tmp2 =~ s/%2C/\x2c/g;

$tmp2 =~ s/%28/\x28/g;

$tmp2 =~ s/%29/\x29/g;

$fields{$tmp1}=$tmp2;

}

$name = $fields{'name'};



$name =~ s/%(..)/pack("c",hex($1))/ge;

$tel = $fields{'tel'};

$tel =~ s/%(..)/pack("c",hex($1))/ge;
# If fields are not empty values are saved:

if ( ($name ne "") && ($tel ne "") ) {

open(STORAGE,">>telmemo.txt");

print STORAGE "$name: ";

print "$tel\n";

close (STORAGE);

}
# New WML Document:

print "Content-type: text/vnd.wap.wml\n\n";


print "\n";

print "\n\n"; print "\n";

print "\n"; print "\n"; print "

print "href=\"http://localhost/cgi-bin/ex9-12_06.pl\">\n"; # “recursion”

print "
\n"; print "
\n"; print "\n";

print "\n";


print "
\n";

print "\n";


# Reading the saved data from the file:

$i = 0; open(STORAGE,"telmemo.txt"); while () {

($nam, $te) = split(/:/,$_);

@array[++$i] = "

\n";

}

close (STORAGE);


# Sorting names: print sort @array; print "
$nam$te
\n";

# Form fields for new inputs:

print "Name:\n";

print "


\n";

print "Tel:\n";

print "\n";

print "
\n"; print "\n\n"; print "\n";



WAP/WML 13

XIII. Публикуване на WAP съдържание. Разширения на WAP

технологията



1. Документи и директории

o картите и скриптовете за WAP могат да се разработват с елементарни тeкстови редактори, но е наложително да бъдат тествани преди публикация – с емулатори и реални устройствa от различен тип и от различни поколения

o съответните програми се съхраняват в текстов формат и имената на файловете имат стандартни разширения - .wml за картите, .wmls за компилационните модули, .pl за Perl скриптовете и .java за сървлетите

o тъй като някои редактори като Notepad и WordPad автоматично слагат разширение .txt за текстовите файлове, е необходимо името на файла да се цитира в двойни кавички (при което се приема без корекция) и изобщо да се проверява коректонстта на инфраструктурата

o свързаните карти се разполагат в една директория, тъй като това опростява декларирането на преход от типа

Go next


и същевремнно се опростява мигрирането на съдържанието към друг сървер

o графичните изображения се записват в отделна директория – това създава по-ясна и достъпна за промени структура особено при по-големи проекти

o при разгърната структура на директориите в главната директория се разполага файла

index.wml, чиято интерпретация се подразбира

o за .wml картите и .wmls компилационните модули съществува още един формат - .wmlс и .wmlsс – в който кода конвертиран до двоичен формат; този код може да бъде предаван директно до микробраузера без да се използва шлюз (в режим на работа на настройка или за код, който се съхранява и интерпретира от джобни преносими устройства без зареждане от сървер)

o публикуваните WAP документи трябва да имат права за четене и изпълнение

o при запис на документите в сървера (обикновено с FTP клиент) трансфера трябва да е настроен за текстов режим за документите и в двоичен режим за файловете с компилиран (двоичен) код и за графиката
2. Графични документи

o стандарта за графика в WAP е Wireless Bitmap (.wbmp) но повечето нови устройства поддържат също GIF и JPEG компресиите; за съвместимост обаче е препоръчително публикуваната графика да е конвертирана до .wbmp

o размера има значение: екраните на първите мобилните телефони с WAP поддържат графика с размери 95х65 пиксела (65 реда), като обикновено се допуска само вертикално плъзгане, а прекомерните десни колони не се изобразяват

o налични са свободно разпространявани програми за конверсия на графичните стандарти до .wbmp – включително WAP модула на Nokia, използван в упражненията


3. Типове документи

o една от настройките на сървера е деклариране на типовете на файловите разширения

– съгл. MIME стандарта – тази настройка се прави от системния администратор на сървера

o съответствието на MIME кодовете и типовете документи е следното

o .wml text/vnd.wap.wml

o .wmlc application/vnd.wap.wml-wbxml

Стр. 1 от 5



WAP/WML 13

o .wmls text/vnd.wap.wmlscript

o .wmlsc application/vnd.wap.wmlscript o .wbmp image/vnd.wap.wbmp
4. Настройка на сървера вж. упр. 9.

5. WTA

o WTA – Wireless Telephony Applications – е разширяване стандартните WAP функции на мобилните терминали (т.е. допълнение към WML/WMLScript) с възможности за обслужване на конвенционални заявки през WAP и също push-технологията за предаване на WAP съдържание към микробраузерите по инициатива на сървера, вместо по заявка на клиента

o WTA стандартизира обслужването в реално време на асинхронни заявки (напр.

позвъняване) докато потребителя работи с микробраузера

o повечето от функциите на WTA се контролират не от потребителя на устройството, а от мобилния оператор; някои от функциите обаче се поддават на потребителска настройка

6. WTA библиотеки и услуги

o WTA се състои от стандартни библиотеки и интерфейси; библиотеките са три:

o мрежовоНЕзависими функции – за процедурите на приемане или иницииране на телефонни обаждания (които могат да се интегрират в WML/WMLScript кода)

o мрежовозависими функции – специфични за всяка мрежа

o настройки – за персонална настройка на WTA функциите

o списъкът библиотеки включва:

o Public WTAI (wp) – общодостъпни функции

o Voice Call (vc) – обаждания и статус на заявките

o Network Text (nt) - SMS

o Phonebook (pb) – телефонен укзател

o Call Logs (cl) – списък на повикванията

o WTA услугите са достъпни чрез:

o обръщение с протоколния спецификатор wtai://_url_ в команда за обобщено събитие +WML карта)

o обръщение към функция от библиотеката WTAPublic (от WMLScript функция)

o WTA услугите (и мрежово-независимите и специфичните) са ориентирани към персоналните комуникации – като поддържане на телефонен указател и текстови съобщения

o синтактични примери:





Pick a call:



extern function deal_nmbr(number) { WTAPublic.makeCall(number); WMLBrowser.refresh(); }

Стр. 2 от 5

WAP/WML 13

extern function new_nmbr(number,name) { WTAPublic.addPBEntry(number,name); WMLBrowser.refresh(); }


7. WTA сървер

o WTA услугите се разполагат на WWW сървер и комуникират с устройствата посредством шлюзове по схемата на WAE (WML/WMLScript съдържание)

o за WTA се ползва обаче отделен порт на локалните устройства и съдържанието се буферира локално, преди да бъде интерпретирано от устройството; шлюзът идентифицира и проверява надеждността ан сървера, осигуряващ WTA (или push) съдържанието

o публичната WTA библиотека е достъпна на адрес wtai:/// (;


)* [! ]


8. Push технология

o push технологията дава възможност за изпращане на съдържание без заявка от клиента, което разширява възможностите за:

o рекламна дейност (респ. финансиране на мрежата и съдържанието)

o услуги от тип бюлетини или друга потребителски-ориентирана (тематична)

информация

o технологията се осигурява от специализирани протоколи: Push OTA и PAP (Push Access Protocol), както и от добавъчна инфраструктура: сървер-инициатор (origin server, push initiator) и push-шлюз


9. Push архитектура

o push операциите се стартират от сървер-инициатор;

o съдържанието се предава до push-шлюз по протокола PAP/НТТР и е в XML формат; след това съдържащия се в него WML документ се предава до терминала по протокола Push OTA в двоичен формат (поради което винаги се прилага протоколна конверсия)

o Push OTA е минимален по функции протокол, който добавя данни в WSP хедъра

o някои шлюзове поддържат информация за техническите характеристики на WAP

устройствата, която може да се използва от сърверите-инициатори

o шлюзът поддържа процесите на идентификация, оторизиране и други функции на защитата по отношение на сърверите-инициатори
10. Push съдържание

o push съдържанието, генерирано от сървер-инициатора в XML формат, съдържа поне два компонента:

o информация за шлюза относно реципиента (или реципиентите – когато шлюза поддържа групов режим)

o стандартен MIME тип на съдържанието

o предавания към терминала WML документ

o шлюзът може да върне към сървера отговор със статуса на оперцията (в XML формат)

o сърверът има възможност да отмени вече предадено за изпълнение съобщение

o синтактичен пример за push съобщение:


Content-type: multipart/related; boundary=end_of_part;

type=”application/xml”



->

-end_of_part


Стр. 3 от 5

WAP/WML 13

Content-type: application/xml




“http://www.wapforum.org/DTD/pap_1.0.dtd”>


откриваща марка на контролните команди от инициатора към шлюза ->





-end_of_part


Content-type: text/vnd.wap.wml

"http://www.wapforum.org/DTD/wml_1.1.xml">





This is a test push message



-end_of_part
Content-type: application/xml
Profile ->




xmlns:prf=”http://www.wapforum.org/UAPROF/ccppschema1.0#”




1/1


1400

1400




1.1





-end_of_part-

11. Push клиентска страна

o за контролиране на процеса на приемане push архитектурата предвижда изпълнението на специално приложение от мобилния терминал – SIA (Session Initiation Application) – което приема ОТА заявките за специфична информация и установява отделна WSP сесия със шлюза за приемане на push съобщения

o освен това приети push съобщения не се представят от терминала без да е активиран

WAP браузерът, който ги интерпретира
Стр. 4 от 5


WAP/WML 13

o освен SIA се изпълнява и диспечерска програма, която прави разбор на контролните данни от push съобщението и го предава на интрпретатора (обикновено браузера)


12. Push клиентски цикъл

o цикълът на предаване на push съобщение към терминала включва следните стъпки:

o шлюзът заявява на SIA предаването на ново съобщение

o SIA стартира WSP сесия с шлюза

o шлюзът предава съобщението към диспечера

o диспечерът предава съобщението към интерпретатора

o когато интрепретатора (браузера) се активира (или е активен) push съобщението се изобразява на екрана

Стр. 5 от 5

Стр. 7 от 7

Стр. 8 от 8

Стр. 6 от 6

Стр. 9 от 9



Стр. 4 от 4



Сподели с приятели:
1   2   3   4   5   6   7   8   9   10




©obuch.info 2024
отнасят до администрацията

    Начална страница