当前位置: 代码迷 >> java >> 如何通过局域网发出HTTP请求?
  详细解决方案

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

热度:62   发布时间:2023-08-04 09:28:07.0

我有Android应用程序(API 14,并在具有Android 4.4的智能手机上运行)和java服务器,它们均连接到同一LAN,但在不同的计算机上运行。

这是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应用程序和Java Servlet均独立工作。 我使用相同的Android代码向Google的Web服务发出HTTP GET请求。 如果我从服务器计算机的浏览器中执行http://10.200.10.67:8080/myServer/myServlet得到预期的结果:

但是,如果我从LAN上的其他任何计算机发出相同的请求,则会收到“网页不可用”的信息。 如果Android应用发出请求,它将无限期地阻塞con.getInputStream()

如何通过局域网发出请求? 它与LAN路由器有关吗?

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

  相关解决方案