我想知道是否有人可以帮我把我调试到正确的轨道上。我有一个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);
}
答案 0 :(得分:0)
您可能正在尝试与localhost
或127.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请求。