Я пытаюсь получить доступ к 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 для доступа к определенной информации.
Вы проверили, что CN в сертификате SSL - это IP-адрес, к которому вы пытаетесь получить доступ, а не доменное имя? – DaveTrux
Я не совсем уверен, что вы имеете в виду, поскольку я довольно новичок в этом. Я знаю, что IP доступен через браузер и работает правильно, но не уверен, что это помогает ответить на ваш вопрос. – user2483079
SSL-сертификаты создаются для определенного имени. Это имя может быть обычным доменным именем, например, www.stackoverflow.com или IP-адресом, но не тем и другим. Браузеры позволят вам получить доступ к SSL через IP-адрес или имя, но вам следует подать жалобу, когда вы просматриваете тот, который не соответствует сертификату. По моему опыту API в этом отношении менее просты, чем браузеры. Кроме того, если сертификат SSL является самоподписанным (вы не купили его у центра сертификации, вы сделали его сами), тогда у вас также могут возникнуть проблемы. – DaveTrux