Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何连接到网页,获取状态代码以检查网页是否可用_Java_Android_Http_Https - Fatal编程技术网

Java 如何连接到网页,获取状态代码以检查网页是否可用

Java 如何连接到网页,获取状态代码以检查网页是否可用,java,android,http,https,Java,Android,Http,Https,我刚接触安卓编程,遇到了一些需要帮助的问题,我在这一部分停留了很长一段时间 问题:代码已成功编译,但使连接检查会使其崩溃。你能告诉我是什么导致了这个问题,并向我建议解决方案或帮助改进我的代码吗。多谢各位 过程:应用程序通过发送简单的HTTP连接来检查其包名,从而检查其要检查的应用程序是否存在于google play store中。如果连接到google play store中的应用程序页面成功,它将输出一个字符串,表明该页面存在,并且它是合法的应用程序 下面是我的代码片段 @Override

我刚接触安卓编程,遇到了一些需要帮助的问题,我在这一部分停留了很长一段时间

问题:代码已成功编译,但使连接检查会使其崩溃。你能告诉我是什么导致了这个问题,并向我建议解决方案或帮助改进我的代码吗。多谢各位

过程:应用程序通过发送简单的HTTP连接来检查其包名,从而检查其要检查的应用程序是否存在于google play store中。如果连接到google play store中的应用程序页面成功,它将输出一个字符串,表明该页面存在,并且它是合法的应用程序

下面是我的代码片段

 @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        output3 = findViewById(R.id.output3);
        output3.setMovementMethod(ScrollingMovementMethod.getInstance());
        connection();
    }

public void connection(){

        try {
            String packagename = "com.facebook.katana";
            URL url = new URL("http://play.google.com/store/apps/details?id="+packagename+"&hl=en");

            URLConnection urlConn = url.openConnection();
            HttpURLConnection con = (HttpURLConnection) urlConn;
            con.setUseCaches(false);
            con.setAllowUserInteraction(false);
            con.setRequestMethod("GET");

            con.connect();

            int status = con.getResponseCode();

            if (status == HttpURLConnection.HTTP_NOT_FOUND){
                output3.append("not from google play store");
            }
            if (status == HttpURLConnection.HTTP_OK) {
                output3.append("google App Store");
            }
            if (status != HttpsURLConnection.HTTP_NOT_FOUND && status != HttpsURLConnection.HTTP_OK)
                output3.append("Other Response");

            con.disconnect();

        } catch (MalformedURLException e) {
            e.printStackTrace();
        } catch (ProtocolException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

首先,主线程不再支持HTTP请求,因此必须使用并行线程,或者简单地使用异步任务。检查下面的异步任务代码

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        output3 = findViewById(R.id.output3);
        output3.setMovementMethod(ScrollingMovementMethod.getInstance());
        AsyncTask.execute(new Runnable() {
        @Override
        public void run() {
            connection();
        }
    });
    }

第二件事是确保在您的清单中添加了Internet权限。

erm,只是一个建议。您可以考虑使用开关(CASE默认)来检查应答器,然后断开连接。与此相关,请注意&非常感谢,先生,它终于起作用了!:D