2015-07-28 31 views
0

我有Android應用程序(API 14和運行在Android 4.4智能手機上)和java服務器都連接到相同的LAN,但運行在不同的機器上。如何通過局域網進行HTTP請求?

這是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從服務器計算機的瀏覽器我得到預期的結果:

enter image description here

但是,如果我從任何其他機器做同樣的請求,在LAN上,我得到「找不到網頁」。 如果Android應用發出請求,它將無限期地阻止con.getInputStream()

如何通過LAN工作請求?它與LAN路由器有什麼關係?

+1

什麼不行?只要這兩個系統在同一個子網上,並且沒有防火牆被阻塞,它就應該向前跨進工作 –

+0

我看不到你的問題你能否清楚你的問題和問題是什麼? – Stefan

+0

你能否粘貼你的android版本並啓用LTE?如果> 5.0和LTE準備好,https://developer.android.com/reference/android/net/Network.html也許有用。 – Willings

回答

1

問題是智能手機通過無線和服務器通過電纜連接到不同的子網。