我有Android应用程序(API 14并在Android 4.4的智能手机上运行)和java服务器都连接到同一局域网但在不同的机器上运行。
这是servlet中的代码:
@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 app和java servlet分别工作。我使用相同的Android代码向Google的Web服务发出HTTP GET请求。如果我从服务器计算机的浏览器中http://10.200.10.67:8080/myServer/myServlet
,我会得到预期的结果:
但是如果我从局域网上的任何其他机器做同样的请求,我的网页就不可用了#39;
如果Android应用发出请求,它将无限期地阻止con.getInputStream()
。
如何通过LAN进行请求?它与LAN路由器有关吗?
答案 0 :(得分:2)
问题在于智能手机通过无线和服务器通过电缆连接,将它们放在不同的子网中。