重试连接实现时遇到问题

时间:2018-01-09 13:55:16

标签: android httpurlconnection

这段代码出了什么问题? 它不会返回true。永远是false的即时回报。

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
}

2 个答案:

答案 0 :(得分:1)

检查这样的有效互联网连接:

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
}

答案 1 :(得分:1)

这种情况正在发生,因为发生了异常。您的代码的问题是您在主线程上有网络调用。要避免发生该异常,请使用以下代码。

FROM azul/zulu-openjdk-centos:latest
VOLUME /tmp
ADD myspecificcode.jar app.jar
RUN bash -c 'touch /app.jar'
ENV javaMemoryLimit="1024M"\
    JAVA_OPTS="-Djava.net.preferIPv4Stack=true -Dsun.rmi.dgc.client.gcInterval=3600000 -XX:+MaxFDLimit -XX:+ExplicitGCInvokesConcurrent -XX:+UnlockExperimentalVMOptions -XX:+UseG1GC"
ENTRYPOINT java $JAVA_OPTS  -Xmx$javaMemoryLimit -jar /app.jar

} 希望对你有帮助。