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
從服務器計算機的瀏覽器我得到預期的結果:
但是,如果我從任何其他機器做同樣的請求,在LAN上,我得到「找不到網頁」。 如果Android應用發出請求,它將無限期地阻止con.getInputStream()
。
如何通過LAN工作請求?它與LAN路由器有什麼關係?
什麼不行?只要這兩個系統在同一個子網上,並且沒有防火牆被阻塞,它就應該向前跨進工作 –
我看不到你的問題你能否清楚你的問題和問題是什麼? – Stefan
你能否粘貼你的android版本並啓用LTE?如果> 5.0和LTE準備好,https://developer.android.com/reference/android/net/Network.html也許有用。 – Willings