application/ vnd.wap.multipart.mixed
08.02.2008 – 23:18:07Co vlastně znamená tento magický content-type? Jednoduše to, že můžete poslat všechno v jednom. No to vám asi nic neřekne, ale přesně to vystihuje, o co tady jde.
V nemobilních technologiích se standartně používá content-type multipart/mixed, který vlastně znamená uplně to samé. Jde o zapouzdření vícero souborů do jednoho souboru/streamu. Je to to samé, jako když posíláte email s obrázkem. To také posíláte jenom jak souvislý text, který odejde na SMTP server. Obsah souboru, který posíláte potom vypadá tak, že máte soubor rozdělený na sekce, pomocí boundary. Po každém boundary následuje vlastní HTTP hlavička, ve které se v případě mobilní varianty jsou hlavně Content-Type, Content-Transfer-Encoding: base64, Content-Location a Date.
Hlavička Content-Type je jasná, říká o jaký Content-Type v dané části dat jde. Content-Transfer-Encoding zase říká, jakým způsobem jsou data přenášená, ve většině případů se použije base64. No a poslední důležitá hlavička ja Content-Location. Ta je zde proto, že obsah v tomto boundary původně pochází z jiné URL, než z jaké přišel. Tato informace je důležitá hlavně kvůli odkazování na objekty ve vnořném XHTML, nebo cachování.
Po HTTP hlavičkách následuje normální obsah souboru, ale zakódovaný pomocí base64. Ať se jedná o čistý text, html, nebo obrázek pro jistotu je lepší vše zakódovat. Po vlastních datech souboru už přijde jenom další boundary a další soubor, resp. příloha. Na konci souboru je potom další boundary, které ale končí dvěma pomlčkami.
Vložený obrázek na Vodafone Live! potom může vypadat třeba takto:
-----------------------------=.3943144700513 Content-Type: image/gif Content-Transfer-Encoding: base64 Content-Location: http://live.vodafone.com/pf§icons/gif20x30/adv§act§what§next.gif Date: Mon, 14 Jan 2008 16:43:13 +0200 Expires: Mon, 14 Jan 2008 16:53:13 +0200 X-HTTP-Cache-Control: no-cache R0lGODlhHgAUANUsAP///xsaGnd3bYmDgJKMiVtYVoF/eCYmI3BwZjAwMEBAQBcXF4qGgJCLh5+f nyUlIqammpWViT8+Oh4eGwcHB5mZjTk5OCYmJCEgHxgYFsjIv3t7cXx7cn19cxAQEIWCe2FhWYiE f1paU25pZ46KhKGhlXNzbA8PDm5uZhYWFJOTh729sv///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAACwALAAAAAAeABQAAAaoQJZw SCwaj8ikcslsGgFQQDEqdbIAjocEU71mt10mILP5DALVcfkcVgIOJRWDfYXL6eIDSgMhsd97fXhL byYrFXNohYeJbUhvIhEdIQMeUAeRk5WORwAUCAIGBGhXn6GjnFMXIAIcDSMKUKutr7GEKaCiBRZQ uKe7qUMAC7kEBQlQxL/IYhPLUgDOusxiJwgNx2nW2NRiDgsBtkJY4OJOVFNRVuvs7URBADs=