如何通过局域网发出HTTP请求?

时间:2015-07-28 07:07:52

标签: java android http servlets lan

我有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,我会得到预期的结果:

enter image description here

但是如果我从局域网上的任何其他机器做同样的请求,我的网页就不可用了#39; 如果Android应用发出请求,它将无限期地阻止con.getInputStream()

如何通过LAN进行请求?它与LAN路由器有关吗?

1 个答案:

答案 0 :(得分:2)

问题在于智能手机通过无线和服务器通过电缆连接,将它们放在不同的子网中。