我目前正在使用以下方法从Android文档中读取文件:这里和这里。用户可以在设置屏幕中选择他们的网站使用HTTP或HTTPS协议。如果他们的网站使用HTTP协议,则对于
因此,实质上,我如何检查Web URL是否为HTTPS协议,以检查用户是否选择了正确的协议?
HttpURLConnection
和HttpsURLConnection
都有效,但是如果他们的网站使用HTTPS协议,则对于HttpURLConnection
协议无效,最糟糕的是它不会给我异常错误。下面是我正在使用的示例代码。因此,实质上,我如何检查Web URL是否为HTTPS协议,以检查用户是否选择了正确的协议?
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是否是错误的前缀/协议?
我怎么才能检查网站使用HTTPS还是HTTP协议?如果用户只输入www.google.com,我添加https://或http://前缀,我如何知道应该使用哪个正确的前缀?
https://
或http//
开头吗? - KarimHttpsURLConnection
,或者不要检查httpSelection.equals(...)
,而是立即检查URL是否以https://
或http://
开头,不要要求用户选择任何内容。 - Karimhttps://
还是http://
,它都可以正常工作。虽然我不确定这是否是正确的方法。 - Dino