Hirdetés

Új hozzászólás Aktív témák

  • Karma
    félisten

    Üdv! Szeretnék egy text fájlot letölteni az internetről egy string típusú változóba, minden fórumon ezt ajánlják:

    public void fafa(View view) {

    try {
    // Create a URL for the desired page
    URL url = new URL("http://www.spessart.hu/counter.txt");

    // Read all the text returned by the server
    BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream()));
    String str;
    while ((str = in.readLine()) != null)
    {
    // str is one line of text; readLine() strips the newline character(s)
    }
    in.close();
    } catch (MalformedURLException e) {
    } catch (IOException e) {
    }

    }

    de nekem hibaüzenet nélkül elszáll tőle a program (a telefonon).

    Mi lehet a hiba? Van esetleg valakinek működő kódja? Megköszönném! :)

    Üdv: Domel

    Jesszus! :W A lehető legrosszabb megközelítés ez, ha valóban ezt ajánlják bármely fórumon, azt a helyet messze kerülni kell.

    Először is, ha UI szálon indítasz hálózati kérést, az felrobban NetworkOnMainThreadExceptionnel. Valószínűleg ez történik a telefonodon is. Miért nem nézed meg a hibaüzenetet, amit kiír a logba?

    Másodszor, ha a fájlban az újsoroknak jelentősége van, akkor ez a fajta soronként beolvasás el fogja szúrni. Ezt mondjuk a kódrészetben látható komment is írja. Az esetek döntő többségében teljesen felesleges és primitív megoldás readLine()-t használni, amikor a streamet közvetlenül is fel lehet dolgozni.

    Harmadrészt az URLConnection helyett vannak magasabb szintű könyvtárak, amikkel a szerverkommunikációt értelmes keretek közé lehet szorítani. Nekem a favoritom a Retrofit.

    De ha ez még nagy falat lenne, javaslom a hivatalos dokumentációt.

Új hozzászólás Aktív témák