Olen tuskaillut taas kerran Symbian C++-ohjelmoinnin kanssa. Tällä kertaa yritin saada Series 80:n RHTTPSession-luokkaa toimimaan. Miksi asiat pitää aina tehdä niin vaikeiksi Symbian-maailmassa? .NETissä riittäisi suurin piirtein WebRequest.Create("http://slashdot.org");

Symbianissa lähdetään ensin miettimään, millä pirulla saa aikaiseksi TUrlC8-luokan. Siihen tarvitaan TUrlParser8 sekä _L8("http://slashdot.org"). Sitten voikin alkaa arpoa, missä järjestyksessä kutsutaan metodeja RHTTPSession::OpenL(), RHTTPSession::OpenTransactionL() ja RHTTPTransaction::SubmitL(). Eikä tämä toki riitä, vaan ensin pitää omassa luokassa toteuttaa MHTTPTransactionCallback eli metodit MHFRunL() ja MHFRunError() ja käsitellä ne oikein, ettei tule panicceja.

Tietenkään kaiken tämän jälkeen mikään ei toimi. Symbian palauttaa EGotResponseHeaders- ja EGotResponseBody-eventit, mutta yksiselitteisesti dokumentoitua ESucceeded- (tai EFailed-) eventtiä ei koskaan tule. Niinpä HTTP-pyyntö jää ikuisesti jumiin.

Miksi mikään ei koskaan toimi Symbianissa kunnolla? Täsmälleen sama asia on tapahtunut joka kerta, kun käyttikseen on lisätty jotain uutta toiminnallisuutta, oli kyse sitten Javasta tai C++:sta. Kaikki on epäselvää ja bugista, niinkuin kehittäjiä ei pätkääkään kiinnostaisi koko juttu. Kunhan toteutetaan jonkun managerin kirjoittamien speksien mukaan.

Published 4.4.2006