我正在尝试使用HttpUrlConnection连接到网址。用户输入的主机可以在http://或https://上运行。当我连接它时会抛出异常作为EOFException。 有什么方法可以通过某些错误代码或其他东西确定网址是否在https上运行?
以下代码用于此目的。
HttpURLConnection.setFollowRedirects(true);
con = (HttpURLConnection) new URL(url[0]).openConnection();
con.setRequestMethod("POST");
con.setConnectTimeout(20000);
我使用了abode代码,如果url无效,就像我输入wwww.gooooooodldldle.com 这是无效的网址。我在这里得到Java.net.SocketTimeout异常
答案 0 :(得分:2)
如果您不再次重新连接,则在创建连接后,URL无法更改。我会这样做,以了解协议。
URL url;
try {
url = new URL(url[0]);
if(url.getProtocol().equalsIgnoreCase(HTTPS){
Lod.i(TAG, "Is HTTPS connection");
} else {
Log.i(TAG, "Is HTTP connection");
}
} catch (EOFException eofEx) {
eofEx.printStackTrace();
}
更新后:
您可以使用Regular Expresion检查url字符串,然后如果正确,请尝试连接。或者将所有逻辑放在try catch中,如果异常增加,则显示toast或对话框。
希望它有所帮助。
答案 1 :(得分:0)
如果您不介意,请尝试使用android-async-http库