Android检查404错误

Android check 404 error

我有一个 url link 下载一个 m3u 文件,我想检查 url 是否存在并且没有 return 404 错误所以我有写了下面的代码。虽然它似乎不起作用。它既不显示 toast.show 也不显示对话框。我只是按下按钮,没有任何反应。真不知道怎么回事

String host = "http://bailive.gr:6500/get.php?type=m3u&username=" + username + "&password=" + password;
boolean flag = checkurl(host);
if (flag == true){
   Toast.makeText(MainActivity.this, "File exists!", Toast.LENGTH_SHORT).show();
   //open player
}
else {
     showNotFoundDialog();}


private boolean checkurl(String host) {
    try {
        HttpURLConnection.setFollowRedirects(false);
        HttpURLConnection con = (HttpURLConnection) new URL(host).openConnection();
        con.setRequestMethod("GET");
        return (con.getResponseCode() == HttpURLConnection.HTTP_OK);
    } catch (Exception e) {
        e.printStackTrace();
        return false;
    }
}

即运行结果

    W/System.err: android.os.NetworkOnMainThreadException
W/System.err:     at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1148)
W/System.err:     at java.net.InetAddress.lookupHostByName(InetAddress.java:443)
W/System.err:     at java.net.InetAddress.getAllByNameImpl(InetAddress.java:294)
W/System.err:     at java.net.InetAddress.getAllByName(InetAddress.java:214)
W/System.err:     at com.android.okhttp.internal.Dns.getAllByName(Dns.java:28)
W/System.err:     at com.android.okhttp.internal.http.RouteSelector.resetNextInetSocketAddress(RouteSelector.java:216)
W/System.err:     at com.android.okhttp.internal.http.RouteSelector.next(RouteSelector.java:122)
W/System.err:     at com.android.okhttp.internal.http.HttpEngine.connect(HttpEngine.java:292)
W/System.err:     at com.android.okhttp.internal.http.HttpEngine.sendSocketRequest(HttpEngine.java:255)
W/System.err:     at com.android.okhttp.internal.http.HttpEngine.sendRequest(HttpEngine.java:206)
W/System.err:     at com.android.okhttp.internal.http.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:345)
W/System.err:     at com.android.okhttp.internal.http.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.java:296)
W/System.err:     at com.android.okhttp.internal.http.HttpURLConnectionImpl.getResponseCode(HttpURLConnectionImpl.java:503)
W/System.err:     at com.churchtv.emmanouilvaresis.churchtv.MainActivity.checkurl(MainActivity.java:89)
W/System.err:     at com.churchtv.emmanouilvaresis.churchtv.MainActivity.onClick(MainActivity.java:67)
W/System.err:     at android.view.View.performClick(View.java:4457)
W/System.err:     at android.view.View$PerformClick.run(View.java:18491)
W/System.err:     at android.os.Handler.handleCallback(Handler.java:733)
W/System.err:     at android.os.Handler.dispatchMessage(Handler.java:95)
W/System.err:     at android.os.Looper.loop(Looper.java:136)
W/System.err:     at android.app.ActivityThread.main(ActivityThread.java:5336)
W/System.err:     at java.lang.reflect.Method.invokeNative(Native Method)
W/System.err:     at java.lang.reflect.Method.invoke(Method.java:515)
W/System.err:     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:871)
W/System.err:     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:687)
W/System.err:     at dalvik.system.NativeStart.main(Native Method)
V/AudioManager: preDispatchKeyEvent keycode: 4  stream: -2147483648
V/AudioManager: preDispatchKeyEvent keycode: 4  stream: -2147483648
W/IInputConnectionWrapper: showStatusIcon on inactive InputConnection

当应用程序试图在其主线程上执行网络操作时抛出此异常。 运行 您的代码在 AsyncTask

StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(policy); 

添加这是您的 oncreate 方法

Thread thread = new Thread(new Runnable() {

    @Override
    public void run() {
        try  {


            //Your code goes here




        } catch (Exception e) {
            e.printStackTrace();
        }
    }
});

thread.start();