0

Currently this is my code for getting the contents of an HTML code (note that it starts at line 45):

public String refresh() {
    try {
        String link = "http://amethystmc.com/staff/android/serverStatus_essential.php?auth=android420";

        URL url = new URL(link);
        URLConnection c = url.openConnection();
        InputStream r = c.getInputStream();
        BufferedReader reader = new BufferedReader(new InputStreamReader(r));

        StringBuilder sb = new StringBuilder();
        String line = null;

        // Read Server Response
        while ((line = reader.readLine()) != null) {
            sb.append(line);
            break;
        }
        return sb.toString();
    } catch (Exception ex) {
        String stacktrace = "";

        for (StackTraceElement string : ex.getStackTrace()) {
            stacktrace += string + "\n";
        }
        Log.e("internet died", stacktrace);
        return new String("Exception: " + stacktrace);
    }
}

This is the error that's being thrown in the console:

06-13 17:45:51.980  19907-19907/? E/internet died. android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1166)
java.net.InetAddress.lookupHostByName(InetAddress.java:385)
java.net.InetAddress.getAllByNameImpl(InetAddress.java:236)
java.net.InetAddress.getAllByName(InetAddress.java:214)
com.android.okhttp.internal.Dns$1.getAllByName(Dns.java:28)
com.android.okhttp.internal.http.RouteSelector.resetNextInetSocketAddress(RouteSelector.java:216)
com.android.okhttp.internal.http.RouteSelector.next(RouteSelector.java:122)
com.android.okhttp.internal.http.HttpEngine.connect(HttpEngine.java:292)
com.android.okhttp.internal.http.HttpEngine.sendSocketRequest(HttpEngine.java:255)
com.android.okhttp.internal.http.HttpEngine.sendRequest(HttpEngine.java:206)
com.android.okhttp.internal.http.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:345)
com.android.okhttp.internal.http.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.java:296)
com.android.okhttp.internal.http.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:179)
me.lukewizzy.servers.MainActivity.refresh(MainActivity.java:51)
me.lukewizzy.servers.MainActivity.onCreate(MainActivity.java:25)
android.app.Activity.performCreate(Activity.java:5458)
android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1093)
android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2376)
android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2470)
android.app.ActivityThread.access$900(ActivityThread.java:174)
android.app.ActivityThread$H.handleMessage(ActivityThread.java:1307)
android.os.Handler.dispatchMessage(Handler.java:102)
android.os.Looper.loop(Looper.java:146)
android.app.ActivityThread.main(ActivityThread.java:5593)
java.lang.reflect.Method.invokeNative(Native Method)
java.lang.reflect.Method.invoke(Method.java:515)
com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1283)
com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1099)
dalvik.system.NativeStart.main(Native Method)

This is the contents of the manifest:

<uses-sdk
    android:minSdkVersion="8"
    android:targetSdkVersion="17"/>
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >

<activity
    android:name="me.lukewizzy.servers.MainActivity"
    android:label="@string/app_name">

    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>

</activity>
</application>

After doing research I'm pretty sure I've given the right permissions so I've no idea where I'm going wrong. I'd be very grateful to anyone who can help.

  • Are you calling this from an Activity? It might be that although it says nothing about the famous [NetworkOnMainThreadException](http://developer.android.com/reference/android/os/NetworkOnMainThreadException.html) – Eric Martinez Jun 13 '15 at 17:01
  • Yeah it's from the main activity class (although it extends ActionBarActivity rather than a normal Activity if that means anything). – lukewizzy Jun 13 '15 at 17:04
  • Then that's your problem, you shouldn't do networking operations on main threads. You must use [AsyncTaskLoader](http://stackoverflow.com/questions/7120813/asynctaskloader-vs-asynctask) (I would recommend that one in particular). Check out this thread http://stackoverflow.com/questions/6343166/android-os-networkonmainthreadexception – Eric Martinez Jun 13 '15 at 17:07
  • I'll look into it, thanks! – lukewizzy Jun 13 '15 at 17:08

0 Answers0