Starší komentáře ke článku: J2ME v kostce - jak se připojit k serveru

Zpět na článek | Úvodní stránka Interval.cz

Avatar

Autor komentáře: Baily

Datum vložení: 19.12.2002 10:04:34

Predevsim dekuji za zajimavy serial, ktery me prinutil vrhnout se do studia jazyka Java. Mel bych dotaz, ktery az tak nesouvisi s dnesnim zamerenim, ale je obecnejsiho charakteru. Vsiml jsem si ze se pouziva dvoji pristup pro identifikaci objektu tridy Command.

<B>1.</B> Zde pouzivany

private Command exit;
exit = new Command("Konec", Command.BACK, 1);
if (c.equals(exit)) { //neco}

<B>2.</B> napr. zde: <a href='http://www-106.ibm.com/developerworks/wireless/library/wi-midlet2/index.html' target='_blank'>http://www-106.ibm.com/developerworks/wireless/library/wi-midlet2/index.html</a>

private Command exitCommand;
exitCommand = new Command("Exit", Command.SCREEN, 1);
if (c == exitCommand){//neco}


je jeden z techto pristupu necim vyhodnejsi , nebo je to uplne jedno, ktery zpusob budu pouzivat ?

Avatar

Autor komentáře: Lucie Rut Bittnerova

Datum vložení: 19.12.2002 12:35:05

Pri porovnavani instanci trid s pouzitim "==" je vysledkem <I>true</I> prave tehdy, je-li na obou stranach rovnosti tataz instance. Porovnavaji se handlery (~ukazatele) na objekty.

Metoda <I>equals(Object o)</I> je metodou tridy <I>Object</I>, kde je implementovana stejne jako operator ==, ovsem kazda trida ji muze pretizit na jine chovani (napr. u retezcu se porovnava jejich obsah, takze dve ruzne instance se stejnym obsahem jsou ekvivalentni vzhledem k metode <I>equals()</I>, ovsem porovnani pomoci == vraci <I>false</I>).

V tomto konkretnim pripade je jedno, jake porovnani se pouzije, mozna je == rychlejsi nez <I>equals()</I>, pouzila jsem <I>equals()</I> asi spise ze zvyku.

Avatar

Autor komentáře: jakub

Datum vložení: 19.12.2002 16:39:48

Zdravim, chtel bych se zeptat (mozna nebudu sam, koho to zajima, proto pisu do fora) na trosku OT:

muzete nekdo doporucit nejaky dobry zdroj na java server pages?

neco stylu: na php je dobry kosek a jako forum treba builder.cz?

potreboval bych neco, kde by byly popsany vylozene zacatky typu:
potrebujete JRE, lepsi je ten a ten, pro komunikaci s databazi mysql potrebujete toto a toto

ps: vim, ze je to trosku drzej dotaz a predem se omlouvam, presto verim, ze nekdo kompetentni mi odpovi ;)

Avatar

Autor komentáře: jakub

Datum vložení: 19.12.2002 16:43:34

ja tak nejak tusim, ze toto nebude free reseni typu php+apache

zeptam se trosku jinak: lze sehnat pro domaci blbnuti webserver, interpret atd.

Avatar

Autor komentáře: Lucie Rut Bittnerova

Datum vložení: 19.12.2002 16:55:04

Hmmm, on o tom na Intervalu nebo Builderu nikdo nepise? Ze bych rozsirila sva temata :-)

Ja osobne si vystacim se seznamem tagu, ktery se treba da najit tady:
<a href='http://www.apl.jhu.edu/~hall/java/Servlet-Tutorial/' target='_blank'>http://www.apl.jhu.edu/~hall/java/Servlet-Tutorial/</a>

Nejprve potrebujete nejake jdk, ke stazeni pro zacatek treba na <a href='http://java.sun.com' target='_blank'>http://java.sun.com</a>

Jinak na jsp ci servlety potrebujete nejaky javovy webovsky server, napr. Tomcat: <a href='http://jakarta.apache.org/tomcat/index.html' target='_blank'>http://jakarta.apache.org/tomcat/index.html</a>
Na testovani a uceni se je docela dobry.

Pro komunikaci s mysql potrebujete JDBC driver:
<a href='http://www.mysql.com/downloads/api-jdbc.html' target='_blank'>http://www.mysql.com/downloads/api-jdbc.html</a>

Vse uvedene je samozrejme zdarma.

Lucie

Avatar

Autor komentáře: Marek Šalanda

Datum vložení: 19.12.2002 17:18:20

Pěkný podvečer pane Jakube,

možná bych zkusil poměrně dobrý seriál kolegy Branického, který najdete na <a href='http://www.interval.cz/autor.asp?id=134' target='_blank'>http://www.interval.cz/autor.asp?id=134</a> Nesmí Vám ale vadit, že je ve slovenštině. Podle seriálu se učí JSP i Pavel Růžička.

Pokud byste chtěl sáhnout po nějaké knize, je tu také možnost: <a href='http://interval.inshop.cz/inshop/scripts/detail.asp?ItemID=46' target='_blank'>http://interval.inshop.cz/inshop/scripts/detail.asp?ItemID=46</a>

Avatar

Autor komentáře: Pavel Růžička

Datum vložení: 19.12.2002 17:32:21

Já jen doplním, že ve zmiňovaném seriálu právě jde o free řešení - Apache Tomcat server + doplňky přímo od výrobce JAVY (Sun...), mě to fungovalo i na starým pentiu 133, i když lehce pomaleji.

Avatar

Autor komentáře: Lucie Rut Bittnerova

Datum vložení: 19.12.2002 17:42:26

Docelas me pobavil. Nazvat J2SE doplnkama... :-)

Avatar

Autor komentáře: jakub

Datum vložení: 19.12.2002 21:39:16

no trosku si sypu sul na hlavu, ponevadz ty clanky me mohly napadnout, nicmene knizky jsem si vsiml ;) presto diky

Avatar

Autor komentáře: jakub

Datum vložení: 5.1.2003 2:17:59

lidi, ja jsem pero, uplne jsem zapomnel, kde jste mi tohle radili a nasel jsem to az ted, po pul hodce, uff, uz jsem zvazoval krizovou variantu - napsat do redakce ;))

Avatar

Autor komentáře: lks

Datum vložení: 5.2.2003 15:21:58

Dobry den,
chtel bych se zeptat, na cinnost kodu, ktery zpracovava data zname velikosti.
// Délka dat je předem známá
byte[] data = new byte[len];
int actual = is.read(data);
s = new String(data);

Avatar

Autor komentáře: lks

Datum vložení: 5.2.2003 15:21:58

Dobry den,
chtel bych se zeptat, na cinnost kodu, ktery zpracovava data zname velikosti.
// Délka dat je předem známá
byte[] data = new byte[len];
int actual = is.read(data);
s = new String(data);

Avatar

Autor komentáře: George

Datum vložení: 7.2.2003 13:28:35

Zdravim

byte[] data = <B>new<b/> byte[len]; //vytvoreni bufferu pro data o velikosti len

int actual = is.read(data);//nacti data ze streamu do bufferu, v actual je pocet nactenych znaku, osobne bych pouzil: is.read(data, 0, len);

s = <B>new<b/> String(data);//z nacteneho pole bytu vytvori String

George

Avatar

Autor komentáře: lks

Datum vložení: 10.2.2003 11:02:40

diky za odpoved ....
prave mi nebylo moc jasne pouziti metody read.
Mozna by se treba jeste mohla vyuzit hodnota actual (at je alespon trochu uzitecna :-)) ) k testu, jestli se vsechna data nacetla v poradku
if (len==actual){ ..ok..}else{... neco se stalo ...}

lks

Avatar

Autor komentáře: lks

Datum vložení: 10.2.2003 11:07:25

Nejdriv se omlouvam za minuly zdvojeny dotaz .....zblaznil je mi asi prohlizec :-(

Chtel bych se zeptat, jestli jste uz nekdo zkousel zasilat data matodou POST.
Pouzivam nasledujici kod:
c = (HttpConnection)Connector.open(url);

c.setRequestMethod(HttpConnection.POST);
c.setRequestProperty("User-Agent",
"Profile/MIDP-1.0 Configuration/CLDC-1.0");
c.setRequestProperty("Content-Language", "en-US");
c.setRequestProperty("CONTENT-TYPE", "application/x-www-form-urlencoded");
//c.setRequestProperty("Content-Length", "5000");



// Getting the output stream may flush the headers
os = c.openOutputStream();
os.write(param.getBytes());
os.flush();

// nelze nacist stranku ....
status = c.getResponseCode();

Avatar

Autor komentáře: lks

Datum vložení: 10.2.2003 11:07:25

Nejdriv se omlouvam za minuly zdvojeny dotaz .....zblaznil je mi asi prohlizec :-(

Chtel bych se zeptat, jestli jste uz nekdo zkousel zasilat data matodou POST.
Pouzivam nasledujici kod:
c = (HttpConnection)Connector.open(url);

c.setRequestMethod(HttpConnection.POST);
c.setRequestProperty("User-Agent",
"Profile/MIDP-1.0 Configuration/CLDC-1.0");
c.setRequestProperty("Content-Language", "en-US");
c.setRequestProperty("CONTENT-TYPE", "application/x-www-form-urlencoded");
//c.setRequestProperty("Content-Length", "5000");



// Getting the output stream may flush the headers
os = c.openOutputStream();
os.write(param.getBytes());
os.flush();

// nelze nacist stranku ....
status = c.getResponseCode();

Avatar

Autor komentáře: lks

Datum vložení: 10.2.2003 11:30:51

Opet se kaju .... Pouze jsem 2x stisk mezernik a formular se mi odeslal rozepsany a 2x ...... (asi ty texty budu radeji kopirovat ....:-(( ) fakt se omlouvam ......

K tomu dotazu vyse ....
Pri testovani mi vetsina emulatoru vrati status - 411 coz je <B>HTTP Status-Code 411: Length Required. </B> jen jedna nokie se tvari ok. Kdyz pak se snazim Length nejak nastavit v hlavice, status je stejny a na emulatoru nokie uz to nefunguje taky. Na "ostrem" mobilu zatim nemam moznost to testovat.
Mel jste nekdo podobne problemy? Je to chyba emulatoru, serveru nebo scriptu? Jak ji korektne osetrit?

Diky a jeste jednou se omlouvam.....:-(
lks

Avatar

Autor komentáře: Marek Demčák

Datum vložení: 22.1.2004 23:44:48

Zajímalo by mě, zda je nějak možné docílit toho, aby šlo do telefonu stahovat i znaky s českou diakritikou. Zkoušel jsem asi 4 různá kódování (win1250, unicode, utf, a další) a ani v jednom případě se to nezobrazilo dobře. Vzhledem k tomu, že jsou na trhu komerční produkty (webviewer), které s tím problém nemají, by to snad nemělo být neřešitelné.. Jaké kódování se může použít? Nebo jsou nějaké speciální entity (html, ascii ani unicode patrně j2me nezná)? Díky za příp. odpověd.

Avatar

Autor komentáře: Lucie Rut Bittnerova

Datum vložení: 26.1.2004 11:45:05

Myslite ceskou diakritiku ve wapu nebo v midletu? Z dotazu to neni jasne, je potreba, abyste presne specifikoval, kde Vam diakritika nefungovala. Funguje v obojim, kodovani nejlepe UTF-8.

Avatar

Autor komentáře: jakub

Datum vložení: 23.1.2004 16:27:21

</B> - ja bych jen uzavrel to tucne pismo :)

Avatar

Autor komentáře: jakub

Datum vložení: 23.1.2004 16:27:52

ze by </B> to neslo </B></B></B></B></B></B>

Avatar

Autor komentáře: paaja

Datum vložení: 4.2.2004 21:45:11

Zdravim,

snazim se uz nakou dobu rozchodit zdrojak z tohohle clanku, ale porad se nedari. Vsechno mi funguje v emulatoru C55ky ale kdyz to nahraju do mobilu, tak je vysledkem null, coz je vysledkem e.getMessage() v metode run(). Kdyz sem zkousel nacist stranku v prohlizeci pres GPRS, tak taky slo vsechno v pohode. Chyba vznika pri is = c.openInputStream(), ale netusim proc. Nevyresil ste nekdo takovej problem?
A mimochodem jakej je rozdil mezi openInputStream() a openDataInputStream()?
Diky moc...

Avatar

Autor komentáře: Lucie Rut Bittnerova

Datum vložení: 5.2.2004 10:37:16

Asi Siemens nenastavuje ve vyjimce message, zkuste nahradit prikaz e.getMessage() prikazem e.toString(), tak byste mel zjistit, jaka chyba nastava.

Metoda openInputStream vraci objekt typu InputStream, kdezto metoda openDataInputStream vraci objekt typu DataInputStream, ktery je rozsirenim objektu InputStream - je urceny ke cteni primitivnich typu a retezcu.

Avatar

Autor komentáře: paaja

Datum vložení: 6.2.2004 15:25:53

Bohuzel vyjimkou je IOException vyhozena pri pripojovani a neobsahuje zadnou detailni zpravu, proto je null. Ve wapovym prohlizeci to funguje, jakej je rozdil mezi tim prohlizecem a tutim midletem? Je mozny, ze treba prohlizec posila nakej specialni parametr v hlavicce, kterej operator (Oskar) vyzaduje, a kterej ja neposilam? Nedalo by se to nejak zjistit?
Anebo nejde alespon javou otevrit urcite URL primo v prohlizeci?

Avatar

Autor komentáře: Jan Bednarik

Datum vložení: 20.3.2004 21:13:18

Dobry den,
resil jsem ten samy problem. Opravdu na Siemensech (jiny tel. jsem nezkousel) i na emulatorech to pri pokusu pripojeni respektive pri metode flush konci vyjimkou IOException. Netusim cim je to zpusobeno, ale da se to "vyresit" zopakovanim volani metody pro pripojeni. Pote uz zadnou vyjimku nevyhodi.

Pokud by vsak nekdo mel jine reseni, "cistejsi" tak sem s nim. :-)

Avatar

Autor komentáře: Ján Žitniak

Datum vložení: 8.6.2004 13:58:14

Chcem sa opýtať na spôsob, ako by sa dal načítať obrázok, ktorý je uložený niekde na serveri. Ďakujem.

Avatar

Autor komentáře: Lucie Rut Bittnerová

Datum vložení: 8.6.2004 14:09:10

Jako URL se zada adresa obrazku. InputStream se nacte do pole bajtu misto do tridy StringBuffer. Pak se pouzije k vytvoreni obrazku staticka metoda

javax.microedition.lcdui.Image.createImage(byte[] imageData, int imageOffset, int imageLength)

Avatar

Autor komentáře: Ján Žitniak

Datum vložení: 9.6.2004 14:27:10

Ďakujem. Daný spôsob som už použil, len dotyčný obrázok som sa snažil vykresliť nízkoúrovňovo a v tom bol problém.

Avatar

Autor komentáře: Andy

Datum vložení: 20.6.2004 23:15:38

Jak je mozne ze na stejne URL dostanu jiny response v pripade ze ho zadam v IE, a v pripade ze ho zadam v MIDletu, konkretne jsem pouzil presny kod, pouzity jako TestHttpMIDlet, v mobilu Nokia 7250i, skompilovano v J2ME WT 1.0.4_01

Avatar

Autor komentáře: Andrew

Datum vložení: 13.10.2004 9:58:25

Dobry den,

zkousel jsem nacist html stranku podle clanku a vypsat nacteny text prozatim napr. pouze na konzoli s pouzitim System.out.println(); bohuzel, narazim na problemy s kodovanim :( napriklad slovo <B>'zažloutlý'</B> obdrzim v nasledujicim tvaru: <B>'za?žloutl??'</B> (tedy o 2 znaky vic)

V detailnim vypisu to vypada takhle (pouzito v poradi (char)ch, ch, String.valueOf(ch), Integer.toHexString(ch))

char: z int: 122 string: z hex: 7a
char: a int: 97 string: a hex: 61
char: ? int: 197 string: ? hex: c5
char: ž int: 382 string: ž hex: 17e
char: l int: 108 string: l hex: 6c
char: o int: 111 string: o hex: 6f
char: u int: 117 string: u hex: 75
char: t int: 116 string: t hex: 74
char: l int: 108 string: l hex: 6c
char: ? int: 195 string: ? hex: c3
char: ? int: 189 string: ? hex: bd

U parametru pripojeni conn.setRequestProperty(...) jsem zkousel pouzit snad vsechny charsety, vysledek je ale porad stejny. Mel jsem napsanu funkci pro dekodovani ceskych znaku na unicode podle ordinalni hodnoty, ale v tomto pripade to nelze pouzit, nebot dostavam vic znaku a nesmyslne hodnoty. Muzete mi prosim rict kde delam chybu? Diky, A.

Avatar

Autor komentáře: Destil

Datum vložení: 13.12.2004 18:32:46

s kódováním je v J2ME opravdu nějaký problém. Zdrojový kód mám normálně ve win-1250 a diakritika se zobrazuje korektně. Ale když chci stáhnout textový soubor z internetu do mobilu, vždy to mrví české znaky. Zkoušel jsem tyto kódování txt souboru: win-1250,iso a utf-8 - nikdy to správně nepřečte české znaky. Můžete mi říct, v čem je problém, nebo jaké kódování txt souboru mám zvolit?

Avatar

Autor komentáře: Jméno a příjmení

Datum vložení: 24.1.2005 17:39:02

mobily standartne podporuji kodovani iso-8859-2

Avatar

Autor komentáře: Destil

Datum vložení: 3.3.2005 12:04:35

Zkousel jsem j2me kod dat do utf-8 a php skript(ze ktereho aplikace nacita data) taky do utf-8. To stejne jsem udelal s kodovanim iso-8859-2. Zkousel jsem snad vsechny kombinace ruznych kodovani, ale bezuspesne, v telefonu se ceske znaky neukazaly. Tedy znaky normalne funguji v aplikaci, ale nikdy se neobjevi v datech stazenych z netu. Pls poradte.

Avatar

Autor komentáře: Tomas

Datum vložení: 24.1.2005 17:46:30

Dobry den. Chtel jsem se zeptat, jak je to s pripojenim k serveru.
Chtel bych docilit toho, ze se pripojim na server a pote uz s nim komunikuju pouze pres toto jedine pripojeni. Pokud vytvorim pripojeni a pokusim se z jeho streamu cist za delsi cas, tak mi to napise, ze je stream uzavren. nevite, jak to vyresit?

Avatar

Autor komentáře: Majo

Datum vložení: 7.3.2005 12:38:55

Zdrawim, potreboval by som pomoct s tymto problemom: Potrebujem spravit funkciu, ktora bude mat ako parameter url stranky a tato funkcia bude mat navratovu hodnotu typu String. Vyzeralo by to asi takto: public String nacitajURL(String url){ ... Pripojenie k serveru ... } Aby to vsak fungovalo je nutne, aby pripojenie k serveru bezalo v samostatnom vlakne - tu je cely problem. Na nete som nasiel par prikladov, ale vo vsekych boli prijate data rovno vypisovane na display (najcastejsie cez form.append() ). Ja vsak potrebujem ziskane data dalej spracovavat. Ak sa najde niekto, kto rozumie, co som tu vlastne chcel napisat a vedel by mi pomoct, bol by som mu vdacny.

Avatar

Autor komentáře: sulthan

Datum vložení: 24.8.2005 16:26:02

V kodu je jedna chyba. Neni to moc dobre viditelne, protoze tato cast kodu je primo doporucena firmou Sun if (len != -1) { byte[] data = new byte[len]; int actual = is.read(data); s = new String(data); } else {...} metoda InputStream.read() nemusi precist vsechna data ze stremu. Napriklad nektere firmwary 3650 umoznuji precist max 512B. Podobne se chovani nektere Sony-Ericssony. Toto je v souladu se specifikaci MIDP a musi se to tedy resit - odpovidajicim zpusobem zpracovat navratovou hodnotu 'actual' a pokud neni precteno vse, zavolat metodu read() znovu. Nehlede nato, ze vzdy pri pripojovani je nutne zpracovavat http response code.

Avatar

Autor komentáře: sulthan

Datum vložení: 11.9.2005 13:14:23

Pokud pracujete s javou, vzdy muzete pouzit kodovani Unicode Big Endian. Zadne utf8 ani iso. V DataInputStream je metoda readChar(), diky ktere to treba ze serveru muzete cist po znacich. Dalsi moznosti je pouzit metodu readUTF(). V tomhle pripade zakodujete string jako utf8, spocitate na kolik to vyjde bytu a pred ten zakodovany string tohle cislo napisete jako unsigned short (2byty). Metoda readUTF() vam to potom krasne precte jako javovy string.

Avatar

Autor komentáře: Destil

Datum vložení: 19.10.2005 20:21:48

Muzete prosim napsat kod zvlast te druhe metody? Moc by mi to pomohlo.

Avatar

Autor komentáře: sivy

Datum vložení: 3.1.2006 14:54:33

Dobry den. Neiem ci to tu este funguje ale skusim sa spytat.Som zaciatocnik a chcem sa spytat kde do JAD traba napisat tu url stranku a v akom tvare? Tuto aplikaciu som rozchodil ale vypisuje Null URL. Je mi to divne lebo ani mobil sa nepyta ci sa ma pripojit na net. Za odpoved dakujem.

Avatar

Autor komentáře: Milos Turek

Datum vložení: 6.3.2006 11:16:06

Dobry den, pokousim se pracovat s tridou CommConnection. Vite nekdo zda je mozne u emulatoru od Nokie navazovat spojeni emulator <-> zarizeni pripojene na seriovem portu PC?

Zpět na článek | Úvodní stránka Interval.cz