2015-07-28 2 views
0

У меня есть приложение 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 из браузера сервера машины я получаю ожидаемый результат:

enter image description here

Но если я такой же запрос от любой другой машины в локальной сети, я получаю "Веб-страница не доступна. Если приложение Android отправит запрос, оно будет на неопределенный срок блокироваться по адресу con.getInputStream().

Как сделать запросы по локальной сети? Связано ли это с маршрутизатором локальной сети?

+1

Что не работает? Пока обе системы находятся в одной и той же подсети, и брандмауэр не блокирует, он должен просто работать с перенаправлением –

+0

. Я не вижу вашего вопроса, не могли бы вы уточнить, что ваш вопрос и проблема? – Stefan

+0

Не могли бы вы вставить свою версию Android и включить LTE? если> 5.0 и LTE готовы, https://developer.android.com/reference/android/net/Network.html может быть полезно. – Willings

ответ

1

Проблема заключалась в том, что смартфон был подключен через Wi-Fi и сервер через кабель, помещая их в разные подсети.

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