Fórumok
Üdv,
Kotlinban egy demo app-ban szeretnék egy url-ről (json) beolvasni adatot. Lépésekben haladok, pl.:
http://date.jsontest.com
{
"date": "01-31-2023",
"milliseconds_since_epoch": 1675181626452,
"time": "04:13:46 PM"
}
Amiket találtam példát hibára futnak. Hogyan kellene egyszerűen (szépen) beolvasni?
// set Button OnClick
val btn = findViewById<Button>(R.id.button)
val text = findViewById<TextView>(R.id.textView)
// set on-click listener
btn.setOnClickListener {
val result = URL("http://date.jsontest.com/").readText()
Az URL-nél elszáll:
at com.example.myjsonapi.MainActivity.onCreate$lambda$1(MainActivity.kt:49)
Után kellene majd valamilyen json parser.
Hozzászólások
Ez a stack trace egyetlen eleme. A teteje kellene a hibaüzenettel.
Rémlik nekem, hogy az Android API-k lényegében lehetetlenné teszik a sima http elérést https nélkül, nem ez a baj?
Jogos:
asch-nek igaza lesz:
csak https-el működik (?).
Hát, legalábbis az rémlik asch-nek és a hibaüzenet is arrafele mutat :)
Keress rá az általam fentebb kiemelt hibaüzenetre, biztos feljön valami doksi/Stackoverflow topic az alapján.
(A fejlesztéshez nem csak a program írás, de a debugolás is hozzá tartozik mint fontos képesség, azért próbállak inkább csak irányba állítani :))
Sőt, ~10 éve már UI threaden se engedte, hanem mindent async kellett megoldani emlékeim szerint
1, Mi ez az antipattern szar, honnan szerezted?
2, Android 9 óta kell network-security-config és ott meg kell adni, hogy milyen domain felé mehet clear http forgalom
3, Ajánlott olvasmányok: OkHttp, Retrofit2, Moshi és Coroutines; mert a következő hely, ahol el fog botlani, az az I/O művelet az UI szálon.
4, További ajánlott olvasmány: ViewModel.
https://iotguru.cloud
Mostanában nem android-oztam.
Megnézem ezeket: OkHttp... de ott is volt valami gondja.
Igen, van az úgy, hogy gondja van. Főleg, ha az elején átugrasz lépcsőfokokat, mert nincs rá időd vagy energiád, akkor később ilyen legyőzhetetlen akadályokba fogsz ütközni.
https://iotguru.cloud
Egyébként egy https request esetén is elszáll: "https://opentdb.com/api.php?amount=1&category=18"
Megnézem ezt a OkHttp-t. De mi nem tetszett neki fent..?
Lásd harmadik pont, amit írtam: "a következő hely, ahol el fog botlani, az az I/O művelet az UI szálon."
https://iotguru.cloud
ok, megyek tovább OkHttp
:)
Ezt tanulmányozom kicsit (bár ez java):
https://www.digitalocean.com/community/tutorials/okhttp-android-example…
Kotlin példa: https://www.youtube.com/watch?v=3gqP4qRGkec
https://www.geeksforgeeks.org/json-parsing-in-android-using-volley-libr…
Igen, a DigitalOcean az Android fejlesztésben élen járó és közismert cég... egyrészt ez Java és nem Kotlin, másrészt ebben is van pár elavultnak tekinthető rész, amit már el kellene felejteni.
Hiába 2022 augusztusi cikk, nagyjából 4-6 éve elavult a tartalma, gondolom kiadták egy gyakornoknak, hogy
másoljonírjon Android releváns cikkeket, hogy felhúzzák a DigitalOcean SEO értékét.Bocsánat, de a faszé' nincs annyi logikád, hogy meg tudd különböztetni a SEO optimalizált szart az értékes tartalomtól?
--
Én azt javaslom, hogy indulj onnan, ahol a legközelebb vagy az adott modulhoz, szóval OkHttp esetén innen ajánlom az "Asynchronous Get" fejezetet: https://square.github.io/okhttp/recipes/
Meg a többit is. Retrofit esetén se javaslom, hogy DigitalOcean blogposztok alapján indulj neki, van rendes dokumentációja: https://square.github.io/retrofit/
https://iotguru.cloud
Ez most kicsit kemény lesz: először is tanuld meg a Kotlin-t vagy a Java-t, mielőtt nekiállsz Android-on bohóckodni. Az Exception-kezelés eléggé az alapok közé tartozik ebben az ökoszisztémában.
Gyakran fogsz exception-ökkel találkozni, főleg ha ennyire tapasztalatlan vagy. Jobban jársz, ha elolvasod, mit tartalmaz. Mindkét eddigi hibádra az egyértelmű válasz benne volt az Exception szövegében.
Android-ban nem sokat próbálkoztam.
Mindenki elkezdte valamikor... érdemes leülni és az alapokat elolvasni legalább egyszer, egy tutorial-sorozat se árt és utána érdemes belecsapni a komplexebb dolgokba, mint JSON letöltés és feldolgozás. Te most úgy akarsz tetőt építeni, hogy nincsenek meg alatta se az alapok, se a falak, nem érted a szálkezelést, se az egész Android működési logikáját és ősrégi blogposztok alapján próbálsz összefoltozni valamit. Nem fog menni...
https://iotguru.cloud
gondoltam a json nem olyan összetett. de akkor tévedtem. :)
A JSON nem összetett. A networking, a szálkezelés, az I/O műveletek, a kivételkezelés, a UI felépítése és működése, az Android specifikus restriction és policy halmaz, a debug készség és a többi összetett. A JSON ezeknek a tetejére jön.
https://iotguru.cloud
Ezt csak úgy próbából:
Mivel nem tudsz JVM-es stacktrace-t olvasni, ezért úgy sejtem, Java-ban és Kotlin-ban sem sokat próbálkoztál. Fogadd meg _Franko_ tanácsát, és nézz után a nyelv/ökoszisztéma alapjainak. Sokkal gyorsabban/jobban tudsz haladni a tanulással, ha alapozol egy kicsit.
+1 _Franko_ jól ért ehhez és remek linkeket adott. Ezeken végigmenni mondjuk lehet egy-két nap, de a végén tudni fogod, hogy hogy kell jól megcsinálni és talán még érteni is fogod, hogy miért.
Kizárólag fejlesztés idejére:
https://stackoverflow.com/a/51902630
köszönöm az infókat!