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