Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    Android: Eccezione quando tento l'accesso ad una pagina web con httpURLconnection

    Sto cercando di salvare in una stringa l'output di una pagina web, ma appena la mia app tenta di accedere alla pagina ottengo un'eccezione.
    Posto qui il codice che esegue la connessione. Qualcuno saprebbe aiutarmi?
    Nel manifest ho già messo il permesso per accedere a internet:

    codice:
    
    
    codice:
    <?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.prozetagamma.oroscopo">
        <uses-permission android:name="android.permission.INTERNET" />
        <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
        <application
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:supportsRtl="true"
    android:theme="@style/AppTheme">
    
            <activity android:name=".Home">
                <intent-filter>
                    <action android:name="android.intent.action.MAIN" />
    
                    <category android:name="android.intent.category.LAUNCHER" />
                </intent-filter>
            </activity>
        </application>
    </manifest>


    codice:
    public
    codice:
    String GetSign(String Segno) throws IOException {
    
        URL url = new URL("http://www.pippo.it/getOro.php");
    
        HttpURLConnection connection = (HttpURLConnection) url.openConnection();
        connection.setConnectTimeout(5000);
        connection.setRequestProperty("Accept-Charset", "UTF-8");
        connection.setRequestProperty("Content-Type", "text/plain; charset=UTF-8");
    
        InputStream is = connection.getInputStream();
    
        BufferedReader rd = new BufferedReader(new InputStreamReader(is));
        String line;
        StringBuilder response = new StringBuilder();
    
        while ((line = rd.readLine()) != null) {
            response.append(line);
        }
    
        rd.close();
        connection.disconnect();
    
        Log.i("Oroscopo", response.toString());
        return response.toString();
    
    }
    Non sei qui per fare una scelta, la scelta l'hai già fatta...Ora devi comprendere le ragioni per cui l'hai fatta. Non possiamo vedere oltre le scelte che non ci sono chiare. http://www.chicercatrova2000.it

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da prozac2000 Visualizza il messaggio
    ma appena la mia app tenta di accedere alla pagina ottengo un'eccezione.
    Quale esattamente? (posta log, stacktrace ecc.. quanto utile)


    P.S. il trattamento delle eccezioni sarebbe poi da migliorare. Se es. readLine lanciasse una eccezione, il close non lo fai.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Se (tirando ad indovinare) l'eccezione dovesse essere una NetworkOnMainThreadException, sappi che l'accesso a risorse di rete va fatto in un AsyncTask e non nel main thread della App.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  4. #4
    Quote Originariamente inviata da LeleFT Visualizza il messaggio
    Se (tirando ad indovinare) l'eccezione dovesse essere una NetworkOnMainThreadException, sappi che l'accesso a risorse di rete va fatto in un AsyncTask e non nel main thread della App.


    Ciao.
    Si, grazie. Infatti poi ho risolto.
    In realtà, essendo abbastanza nuovo con Android, non conoscevo l'obbligo di mettere le "operazioni lente" in un task asincrono...
    Non sei qui per fare una scelta, la scelta l'hai già fatta...Ora devi comprendere le ragioni per cui l'hai fatta. Non possiamo vedere oltre le scelte che non ci sono chiare. http://www.chicercatrova2000.it

  5. #5
    Quote Originariamente inviata da andbin Visualizza il messaggio
    Quale esattamente? (posta log, stacktrace ecc.. quanto utile)


    P.S. il trattamento delle eccezioni sarebbe poi da migliorare. Se es. readLine lanciasse una eccezione, il close non lo fai.
    Si, si. Poi il try/catch lo metto. Stavo cercando di far funzionare queste righe di codice...
    Non sei qui per fare una scelta, la scelta l'hai già fatta...Ora devi comprendere le ragioni per cui l'hai fatta. Non possiamo vedere oltre le scelte che non ci sono chiare. http://www.chicercatrova2000.it

Tag per questa discussione

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.