2013-06-13 3 views
0

Я пытаюсь получить доступ к IP-адресу из моего приложения для Android, но мне не повезло. Вот моя асинхронная задача, которую я пытаюсь:Может ли HttpsURLConnection работать с IP-адресом?

protected String doInBackground(Void...arg0) { 
     try{ 
      URL url = new URL(myIP); 
      HttpsURLConnection con = (HttpsURLConnection) url.openConnection(); 
      String read = readStream(con.getInputStream()); 
      return read; 
     } catch(Exception e){ 
      e.printStackTrace(); 
     } 

     return null; 
    } 

    private String readStream(InputStream in){ 
     BufferedReader reader = null; 
     StringBuilder sb = new StringBuilder("xxxx"); 
     try{ 
      reader = new BufferedReader(new InputStreamReader(in)); 
      String line = ""; 
      while((line = reader.readLine()) != null){ 
       sb.append(line + "\n"); 
      } 
     } catch(IOException e){ 
      e.printStackTrace(); 
     } finally{ 
      if(reader != null){ 
       try{ 
        reader.close(); 
       } catch(IOException e){ 
        e.printStackTrace(); 
       } 
      } 
     } 
     return sb.toString(); 
    } 

    protected void onPostExecute(String result){ 
     textView.setText(result); 
    } 

Когда я использую обычный URL как www.stackoverflow.com это работает отлично, но когда я пытаюсь использовать IP не только никакого ответа вообще. Он не бросает никаких исключений и не обновляет textView (я попытался вернуть разные результаты, основанные на том, какое исключение выбрано). Итак, это подводит меня к моему вопросу, является ли IP-адрес действительным для URL-соединения? Сообщите мне, есть ли какая-либо другая информация, которую я могу предоставить.

Также может быть полезно, что моя конечная цель - отправить запросы REST на этот IP для доступа к определенной информации.

+0

Вы проверили, что CN в сертификате SSL - это IP-адрес, к которому вы пытаетесь получить доступ, а не доменное имя? – DaveTrux

+0

Я не совсем уверен, что вы имеете в виду, поскольку я довольно новичок в этом. Я знаю, что IP доступен через браузер и работает правильно, но не уверен, что это помогает ответить на ваш вопрос. – user2483079

+0

SSL-сертификаты создаются для определенного имени. Это имя может быть обычным доменным именем, например, www.stackoverflow.com или IP-адресом, но не тем и другим. Браузеры позволят вам получить доступ к SSL через IP-адрес или имя, но вам следует подать жалобу, когда вы просматриваете тот, который не соответствует сертификату. По моему опыту API в этом отношении менее просты, чем браузеры. Кроме того, если сертификат SSL является самоподписанным (вы не купили его у центра сертификации, вы сделали его сами), тогда у вас также могут возникнуть проблемы. – DaveTrux

ответ

0

я не имел доступа к IP из сети я был. Короче говоря, ответ на мой первоначальный вопрос - да, IP-адреса являются vaild для HttpURLConnections.

1

класса HttpsURLConnection для HTTPS соединений, если вы хотите получить доступ к сайту с помощью IP переменных MyIP должна быть что-то вроде этого:

String myIP="https://62.123.123.123/index.php" //for example 

Однако, если вы хотите получить доступ к удаленному компьютеру для прямого вы должны использовать Сокеты.

проверка this из

Надеется, что это помогает :)

+0

Конкретный IP-адрес переходит в веб-интерфейс службы. myIP находится в этом формате и не работает. Я буду смотреть дальше в сокеты, но он казался намного более сложным, чем то, что мне нужно. – user2483079

0

У меня была эта проблема, и оказалось, что вы не можете поместить IP-адрес в поле CN сертификата, вместо этого он должен быть включен в поле Alternate Name.

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