Java 尝试从Android连接时从Glassfish 4.1 servlet获取HTTP 505

Java 尝试从Android连接时从Glassfish 4.1 servlet获取HTTP 505,java,android,http,servlets,glassfish,Java,Android,Http,Servlets,Glassfish,我在NetBeans 8附带的Glassfish 4.1上运行带有servlet的Java服务器。我有一个Android应用程序API 19在物理设备Prestigio Grace上运行 servlet通过以JSON格式发送一些数据来响应GET和POST请求。如果我在服务器运行时从浏览器FF 40.0.2发出请求,它工作正常。如果我使用相同的URL从我的Android应用程序执行相同的请求,我会得到状态代码505 Android应用程序中执行GET请求的代码: public String mak

我在NetBeans 8附带的Glassfish 4.1上运行带有servlet的Java服务器。我有一个Android应用程序API 19在物理设备Prestigio Grace上运行

servlet通过以JSON格式发送一些数据来响应GET和POST请求。如果我在服务器运行时从浏览器FF 40.0.2发出请求,它工作正常。如果我使用相同的URL从我的Android应用程序执行相同的请求,我会得到状态代码505

Android应用程序中执行GET请求的代码:

public String makeHttpGetRequest(String urlStr) throws IOException {
    URL url = new URL(urlStr);

    HttpURLConnection con = (HttpURLConnection) url.openConnection();
    con.setRequestMethod("GET");

    int responseCode = con.getResponseCode();
    if (responseCode == 200) {
        InputStreamReader isr = new InputStreamReader(con.getInputStream());
        String response = readUntilEndOfStream(isr);
        isr.close();
        return response;
    } else {
        throw new IOException("bad status code : " + responseCode + " , from: " + urlStr);
    }
}
以及我在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, ServletException {
    try {
        UniversalAddress adr = params2UniversalAddress(request.getParameterMap());
        AvgPricesRenovationState avgPrices = db.getAvgPricesAndRenovationState(adr);
        if (avgPrices == null) { //prices for that address are not stored. Now we have to calculate them from scratch
            avgPrices = getNewAvgPrices(adr);
        }
        response.getWriter().write(avgPrices.toHttpParams());
    } catch (NullPointerException ex) {
        printMissingParametersResponse(request, response);
    }
}

为什么我会得到状态代码505,以及如何解决这个问题?

urlStr参数表的值是多少?找到了。问题是Android是通过wifi连接的,wifi是一个不同于通过服务器电缆连接的局域网子网。所以这些请求从来没有向服务器提出过。这也是我的想法。您可能使用了localhost,而不是运行服务器的机器的本地IP。