Reklāma:

One URI to rule them all

Man ir nācies piekabināt parastām lapām to WML analogus, lai mobilo ierīču lietotāji varētu dikti jau nu jauki skatīties. Un, lai cik tas nebūtu dīvaini, mani vienmēr ir kretinējis tas, ka jāveido ir vai nu wap.saits.lv vai saits.lv/wap. Nenoliegšu, ka vienmēr tā arī esmu darījis :) Bet tagad no more.

Teju vai 100 procentos gadījumu var iztikt ar saits.lv. Viss, kas mums ir jāizdara, ir izvēle – ko klientam piedāvāt – WML vai XHTML saturu. Vai varbūt Atom, vai HDML?

Jebkurš browseris, sūtot serverim kādu pieprasījumu, norāda satura veidus, kurus viņš saprot, izmantojot Accept HTTP hederus. Mūs interesē tieši Accept. Daži piemēri:

Firefox/0.8
application/x-shockwave-flash, text/xml, application/xml, application/xhtml+xml, text/html;q=0.9, text/plain;q=0.8, video/x-mng, image/png, image/jpeg, image/gif;q=0.2, */*;q=0.1
Opera 7.51
application/x-shockwave-flash, text/xml, application/xml, application/xhtml+xml, text/html;q=0.9, text/plain;q=0.8, video/x-mng, image/png, image/jpeg, image/gif;q=0.2, text/css, */*;q=0.1
Nokia 6600
application/prs.s2.putty-config, audio/wav, audio/x-wav, audio/basic, audio/x-au, audio/au, audio/x-basic, video/mp4, video/mpeg4, video/3gpp, application/vnd.rn-realmedia, audio/AMR-WB, audio/AMR, application/sdp, audio/sp-midi, audio/x-beatnik-rmf, audio/midi, application/java-archive, text/vnd.sun.j2me.app-descriptor, application/vnd.wap.wmlc, text/vnd.wap.wml, application/vnd.wap.wbxml, application/vnd.wap.wmlscriptc, text/html, application/vnd.wap.xhtml+xml, application/xhtml+xml, Psiloc/irRemote.ccf, Psiloc/irRemote.lirc, , audio/x-mp3, application/mp3skin, music/mod, music/xm, music/it, music/s3m, application/x-wallet-appl.user-data-provision, application/vnd.met.ticket, application/vnd.symbian.install, audio/x-pn-realaudio-plugin, audio/x-pn-realaudio, audio/mpegurl, audio/x-mpegurl, text/x-co-desc, application/vnd.oma.dd+xml, application/vnd.nokia.ringing-tone, text/vnd.symbian.wml.dtd, application/java, video/3gp, audio/rmf, audio/x-rmf, audio/x-midi, application/x-java-archive, application/vnd.oma.drm.message, application/x-x509-ca-cert, text/plain, text/X-vCard, text/calendar, text/x-vCalendar, text/css, image/*
IE 6
*/*

Tad nu tā. Ņemsim par piemēru Nokia 6600. No visas šīs MIME tipu gūzmas mums ir nepieciešami tikai tie, kuri ir tekstuāli. T.i. – text/.... Mums paliek:

text/vnd.sun.j2me.app-descriptor
text/vnd.wap.wml
text/html
text/x-co-desc
text/vnd.symbian.wml.dtd
text/plain
text/X-vCard
text/calendar
text/x-vCalendar
text/css

Secību jaukt nedrīkst. Tie tipi, kuri ir sākumā, ir tie, kurus tālrunis pieņemtu vislabprātāk.

Starp citu. Par secību. Tipam var tikt norādīts arī t.s. quality factor, kurš, rupji runājot, norāda uz svarīgumu un ir robežās no nulles, līdz viens. Ja tas nav norādīts, tā vērtība ir viens. Tas tiek norādīts sekojoši: text/vnd.wap.wml;q=0.5. Attiecīgi, jo mazāks šis quality factor, jo mazāk tālrunis vēlas norādīto satura veidu. Piemērs:

text/vnd.wap.wml;q=0.5, text/html;q=0.8, text/html+xml

Tad pēc svarīguma šis saraksts tiek izkārtots sekojošā secībā:

text/html+xml
text/html
text/vnd.wap.wml

Vēl viens moments. Tips var tikt norādīts kā text/*, kas nozīmē, ka tālrunis pieņem jebkuru tekstu. Neskatoties uz neko, šāds tips tiek novietots saraksta beigās. T.i., ja mums ir rinda text/*, */*, text/xml, tad rezultātā mums būs text/xml, text/*, */*.

Atgriezīsimies pie Nokia. Pēc kārtas ejot cauru mūsu sakārtotajam sarakstam, mēs skatāmies, ko varam piedāvāt šim tālrunim. Pirmais, ko ieraugām, ir text/vnd.sun.j2me.app-descriptor. Nedz mēs zinām, kas tas ir, nedz kā to pasniegt. Ignorējam. Nākamais ir text/vnd.wap.wml. Ahā! Tas takš ir WML! To mēs mākam, to mēs tūliņ, tūliņ. Un basta. Izsniedzam ierīcei WML kodu.

Ja nu mums neizdodas ierīcei piedāvāt to, ko jamā saprot, tad obligātā kārtā atgriežam HTTP kļūdu ar numuru 406, kas nozīmē not acceptable.

Kaut kā tā. Ja esmu nepareizi izskaidrojis quality factor nozīmi, lūdzu labojiet mani. Ja vēl kaut ko ne tā, dariet to pašu.

Un sīkāk par HTTP Accept.

Šie ir tie 7 komentāri

    • #2. Pete 2004. gada 9. septembrī, plkst. 10:32
    • Ļoti laba viela pārdomām. Ļoti gribētos vairāk tamlīdzīgas infas.

    • Saite uz šo komentāru
    • #4. laacz 2004. gada 21. oktobrī, plkst. 08:38
    • Tāpēc, ka ar esošo SPP versiju nevaru 100% garantēt, ka saturs būs XHTML :) Tāpēc arī pagaidām padodu kā text/html. Bet viss mainās, kā zināms :)

    • Saite uz šo komentāru
    • #6. UL 2005. gada 18. janvārī, plkst. 22:47
    • text/vnd.sun.j2me.app–descriptor – to mēs, Lācz, mākam un zinām ;) (tas ir JAD), bet tas neattiecas uz šī tava posta ģenerālo tēmu.

    • Saite uz šo komentāru

Moderācija: Daži vārdi var gadīties, ka ir iz melnās listes (viagra and stuff). Tādi komentāri tiek aizturēti, pirms parādās lapā. Ja Tavs komentārs neparādās uzreizi, būs vien jāpagaida, līdz es jamo izlasīšu. Protams, ka paturu tiesības sev netīkošos komentārus dzēst, iemeslu neminot.