http调用服务器在浏览器中工作,但在android中返回响应代码500和文件未找到错误

时间:2016-08-05 22:56:43

标签: java android jsp http

我想知道是否有人可以帮我把我调试到正确的轨道上。我有一个Android设备正在对服务器进行http调用,假设它返回一个字符串响应到Android设备。当我在浏览器中进行http调用时,它正在工作。当我在我的Android应用程序中创建它时,它返回"文件未找到异常"。

在Android设备上获取响应代码时,它从服务器返回500(内部服务器错误),但我的http呼叫在浏览器中工作

我的服务器在jsp页面中接收http请求,该页面转换为servlet,然后tomcat服务器工作(转换为java类和机器代码),然后生成生成的HTML代码,然后将其发送回浏览器。

我对服务器很陌生,所以我不知道如何调试服务器中发生的事情,当浏览器中的所有内容都可以导致android出错时。

可能导致此问题的可能问题是什么?如何开始调试?

这是我在Android中进行http调用的代码,它在一个单独的线程上运行:

URL url = new URL(uri);
HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
urlConnection.setRequestMethod("GET");
urlConnection.setDoOutput(true);
urlConnection.setRequestProperty("Content-Type", "text/plain; charset=utf-8");
urlConnection.setRequestProperty("Expect", "100-continue");
urlConnection.connect();

int responseCode = urlConnection.getResponseCode(); //can call this instead of con.connect()
if (responseCode >= 500 && responseCode <= 599) {

    throw new Exception("Response Code from Server: " + responseCode); 

   }

else {

    BufferedReader in = new BufferedReader(new   InputStreamReader(url.openStream()));
    result = "";
    String inLine;


    while ((inLine = in.readLine()) != null) {
        result += inLine;
    }

    in.close();

    Log.d("MainActivity", "IP Address is: " + result);

    }

2 个答案:

答案 0 :(得分:0)

您可能正在尝试与localhost127.0.0.1建立联系。

这在浏览器(桌面)中使用很好,但对于移动应用程序,您必须使用10.0.2.2

值得一提的是,您可以使用Retrofit并使用几行执行HTTP请求。

答案 1 :(得分:0)

尝试删除这两行:

urlConnection.setRequestProperty("Content-Type", "text/plain; charset=utf-8");
urlConnection.setRequestProperty("Expect", "100-continue");

如果您没有同时发送请求正文,则使用这些是无效的。您只想执行一个简单的GET请求。