我正在向服务器发送请求以获取一些数据,但在获取数据之前,我想检查该网址是http
还是https
。
我该如何判断,即如何检查网址是http
还是https
?
我使用了一种方法,我使用http://
向服务器发送请求。如果发生协议异常,我再次使用https://
向服务器发送请求。我可以这样检查,但我不希望发生异常。有没有办法再检查一下?
Follwoing是将请求发送到服务器的代码示例: 使用OkHttp -
try
{
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url(url[0])
.build();
Response httpResponse = client.newCall(request).execute();
}
catch(IOException e)
{
Log.i("log","exception");
}
使用HtppUrlConnection:
try
{
HttpURLConnection.setFollowRedirects(true);
con = (HttpURLConnection) new URL(url[0]).openConnection();
con.setRequestMethod("GET");
con.setConnectTimeout(10000);
}
catch(IOException e)
{
Log.i("log","exception");
}
答案 0 :(得分:0)
尝试调试并检查连接是否是运行时的HttpURLConnection或HttpsURLConnection。如果是这种情况,您可以使用内省并将连接强制转换为正确的类类型。 E.g:
if (con instanceOf HttpsURLConnection) { /* ... handle https ... */}
但我不确定你的问题。首先使用new URL(url[0])
中的参数构造URL。这意味着您事先知道了网址,因此也知道协议......
我假设url [0]是String
。你不能做if(url[0].startsWith("https"))
吗?
或者,您也可以先创建一个URL实例,然后在对象上调用getProtocol
。
答案 1 :(得分:0)
将String
解析为URL
后,即可获得协议:
URL url = new URL(my_url);
String protocol = url.getProtocol();
输出看起来像http
或https
。