重试连接实现时遇到问题
Having trouble with retry connection implementation
这段代码有问题吗?
它没有 return true
。总是瞬间false
return.
public boolean chkCon() {
try {
URL url = new URL("http://google.com");
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("GET");
connection.connect();
int code = connection.getResponseCode();
return code == 200;
} catch (Exception e){
return false;
}
}
如果我设置:
public boolean chkCon() {
return true; // it works
}
像这样检查是否存在有效的互联网连接:
private boolean isNetworkConnected() {
ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
return cm.getActiveNetworkInfo() != null && cm.getActiveNetworkInfo().isConnected();
}
检查特定服务器是否已启动:
// Host to check
String host = "http://www.google.com/";
//Timeout in millis
int timeout = 30000;
if(InetAddress.getByName(host).isReachable(timeOut)){
//Successful ping
}else{
//Unsuccessful ping
}
发生这种情况是因为发生异常。您的代码的问题是您在主线程上有一个网络调用。为避免发生该异常,请使用以下代码。
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
new MyAsyncTasck().executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
}
public class MyAsyncTasck extends AsyncTask<Void, Void, Boolean> {
@Override
protected Boolean doInBackground(Void... voids) {
return chkCon();
}
@Override
protected void onPostExecute(Boolean aBoolean) {
super.onPostExecute(aBoolean);
String result = "Your result is " + aBoolean;
}
}
public boolean chkCon() {
try {
URL url = new URL("http://google.com");
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("GET");
connection.connect();
int code = connection.getResponseCode();
return code == 200;
} catch (Exception e){
return false;
}
}
}
希望对你有帮助。
这段代码有问题吗?
它没有 return true
。总是瞬间false
return.
public boolean chkCon() {
try {
URL url = new URL("http://google.com");
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("GET");
connection.connect();
int code = connection.getResponseCode();
return code == 200;
} catch (Exception e){
return false;
}
}
如果我设置:
public boolean chkCon() {
return true; // it works
}
像这样检查是否存在有效的互联网连接:
private boolean isNetworkConnected() {
ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
return cm.getActiveNetworkInfo() != null && cm.getActiveNetworkInfo().isConnected();
}
检查特定服务器是否已启动:
// Host to check
String host = "http://www.google.com/";
//Timeout in millis
int timeout = 30000;
if(InetAddress.getByName(host).isReachable(timeOut)){
//Successful ping
}else{
//Unsuccessful ping
}
发生这种情况是因为发生异常。您的代码的问题是您在主线程上有一个网络调用。为避免发生该异常,请使用以下代码。
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
new MyAsyncTasck().executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
}
public class MyAsyncTasck extends AsyncTask<Void, Void, Boolean> {
@Override
protected Boolean doInBackground(Void... voids) {
return chkCon();
}
@Override
protected void onPostExecute(Boolean aBoolean) {
super.onPostExecute(aBoolean);
String result = "Your result is " + aBoolean;
}
}
public boolean chkCon() {
try {
URL url = new URL("http://google.com");
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("GET");
connection.connect();
int code = connection.getResponseCode();
return code == 200;
} catch (Exception e){
return false;
}
}
} 希望对你有帮助。