我目前正在使用以下内容从 android 文档中读取文件 here和 here .用户选择(在设置屏幕中)他们的站点是使用 HTTP 还是 HTTPS 协议(protocol)。如果他们的网站使用 HTTP 协议(protocol),则它适用于 HttpURLConnection
和 HttpsURLConnection
,但如果他们的网站使用 HTTPS 协议(protocol),则它不适用于 HttpURLConnection
协议(protocol),最糟糕的是它没有给我异常错误。下面是我正在使用的示例代码。
所以本质上,我如何检查 web url 是否为 HTTPS 协议(protocol),从而检查用户是否选择了正确的协议(protocol)?
InputStream inputStream;
HttpURLConnection urlConnection;
HttpsURLConnection urlHttpsConnection;
boolean httpYes, httpsYes;
try {
if (httpSelection.equals("http://")) {
URL url = new URL(weburi);
urlConnection = (HttpURLConnection) url.openConnection();
inputStream = new BufferedInputStream((urlConnection.getInputStream()));
httpYes = True;
}
if (httpSelection.equals("https://")) {
URL url = new URL(weburi);
urlHttpsConnection = (HttpsURLConnection) url.openConnection();
urlHttpsConnection.setSSLSocketFactory(context.getSocketFactory());
inputStream = urlHttpsConnection.getInputStream();
https=True;
}
catch (Exception e) {
//Toast Message displays and settings intent re-starts
}
finally {
readFile(in);
if(httpYes){
urlConnection.disconnect();
httpYes = False;
}
if(httpsYes){
urlHttpsConnection.disconnect();
httpsYes = False;
}
}
}
编辑:
再详述一下。我需要查看它是否从网站返回有效响应?因此,如果用户选择了 http 而不是 https,我该如何检查 http 是否是不正确的前缀/协议(protocol)?
如何查看网站使用的是HTTPS还是HTTP协议(protocol)?如果用户然后只输入 www.google.com 并且我附加 https:// 或 http:// 前缀,我怎么知道应该使用哪一个?
最佳答案
你可以使用android URLUtil检查 url 是 HTTP 还是 HTTPS:
public static boolean isHttpUrl (String url)
Returns True iff the url is an http: url.
public static boolean isHttpsUrl (String url)
Returns True iff the url is an https: url.
编辑:
public static boolean isValidUrl (String url)
Returns True iff the url is valid.
关于java - 检查 URL 是 HTTPS 还是 HTTP 协议(protocol)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30411059/