У меня есть приложение Android (API 14 и работает на смартфоне с Android 4.4) и java-сервер, подключенный к одной локальной сети, но работающий на разных компьютерах.Как сделать запрос HTTP по локальной сети?
Это код в сервлет:
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
handleRequest(request, response);
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
handleRequest(request, response);
}
private void handleRequest(HttpServletRequest request, HttpServletResponse response) throws IOException {
response.getWriter().write("yes!!!");
}
И это код Android приложение использует, чтобы сделать HTTP GET запрос:
URL url = new URL("http://10.200.10.66:8080/myServer/myServlet"); //this is server's LAN IP I got from ipconfig
HttpURLConnection con = (HttpURLConnection) url.openConnection();
BufferedReader br = new BufferedReader(new InputStreamReader(con.getInputStream())); //The app will indefinitely block here
String response = readUntilEndOfStream(br);
br.close();
Оба Android приложения и Java Servlet работы отдельно. Я использую тот же код Android, чтобы сделать HTTP GET-запрос веб-сервису Google. Если я http://10.200.10.67:8080/myServer/myServlet
из браузера сервера машины я получаю ожидаемый результат:
Но если я такой же запрос от любой другой машины в локальной сети, я получаю "Веб-страница не доступна. Если приложение Android отправит запрос, оно будет на неопределенный срок блокироваться по адресу con.getInputStream()
.
Как сделать запросы по локальной сети? Связано ли это с маршрутизатором локальной сети?
Что не работает? Пока обе системы находятся в одной и той же подсети, и брандмауэр не блокирует, он должен просто работать с перенаправлением –
. Я не вижу вашего вопроса, не могли бы вы уточнить, что ваш вопрос и проблема? – Stefan
Не могли бы вы вставить свою версию Android и включить LTE? если> 5.0 и LTE готовы, https://developer.android.com/reference/android/net/Network.html может быть полезно. – Willings