2015-03-11 3 views
-1

Я отправляю запрос на сервер, чтобы получить некоторые данные, но перед получением данных я хочу проверить, находится ли URL-адрес на http или https.Как проверить protcol URL в Android?

Как я могу сказать это, то есть как я могу проверить, является ли URL 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

проверить этот похожий вопрос ---------- http://stackoverflow.com/questions/1175096/how-to-find-out-if-you-are -using-https-without-serverhttps –

+0

Это не похоже. Я не хочу писать код на стороне сервера. Я хочу его проверить в android. –

+0

Tarun, можете ли вы вставить код, который вы пытаетесь запустить, что дает исключение для 'http'? Трудно вам помочь, не зная, как вы получаете URL-адрес, в первую очередь, то есть ли это строка или что-то еще. –

ответ

0

отладки Try и проверки, является ли соединение является HttpURLConnection или HttpsURLConnection во время выполнения. Если это так, вы можете использовать интроспекцию и передать соединение правильному типу класса. Например:

if (con instanceOf HttpsURLConnection) { /* ... handle https ... */} 

Однако я не уверен в вашем вопросе. Сначала вы создаете URL-адрес, используя аргумент в new URL(url[0]). Это означает, что вы заранее знаете URL-адрес и, следовательно, знаете протокол ...

Я предполагаю, что URL-адрес [0] является String. Разве вы не можете сделать if(url[0].startsWith("https"))?

В качестве альтернативы вы также можете сначала создать экземпляр URL-адреса, а затем вызвать объект getProtocol.

0

После разбора String в URL, вы можете получить протокол:

URL url = new URL(my_url); 
String protocol = url.getProtocol(); 

И выход будет похож http или https.

Смежные вопросы