我正在开发一个登录tomcat服务器的应用程序。 我正在使用HTTP GET请求这样做,并且在成功连接后, 消息通过缓冲流显示。
以下代码用于连接。
public String getInternetData() throws Exception {
BufferedReader in = null;
String data = null;
try {
HttpClient client = new DefaultHttpClient();
client.getConnectionManager().getSchemeRegistry().register(getMockedScheme());
URI website = new URI("https://ts.rks.com:8443/kss/login?username=hydm&password=pw1234");
HttpGet request = new HttpGet();
request.setURI(website);
HttpResponse response = client.execute(request);
response.getStatusLine().getStatusCode();
in = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));
StringBuffer sb = new StringBuffer("");
String l = "";
String nl = System.getProperty("line.separator");
while ((l = in.readLine()) != null) {
sb.append(l + nl);
}
in.close();
data = sb.toString();
return data;
} finally {
if (in != null) {
try {
in.close();
return data;
} catch (Exception e) {
Log.e("GetMethodLogin", e.getMessage());
}
}
}
这是用户通过登录活动登录时激活的代码。 当我返回菜单屏幕并尝试运行另一个需要用户的活动时 要登录,它表示用户尚未登录。
当用户离开活动或我没有正确建立连接时,连接是否断开连接。
答案 0 :(得分:0)
当活动移至后台时,连接将不会保留。我无法从您发布的代码中判断出来,但我相信您应该使用AsyncTask进行此连接。这来自我从链接中提取HTML源代码的经验。
这个问题可能会回答你的问题:What to do with AsyncTask in onPause()?
答案 1 :(得分:0)
实际上有两件事需要改变,而不仅仅是一件。
您需要在活动中保持持久性的任何内容都应该在服务中完成,而不是在活动的代码中完成。
其次,在最近的Android版本中,所有网络都必须从后台线程完成,而不是UI线程(总是有针对UI线程网络的建议,但现在它会触发异常)。将代码放在服务中并不意味着它在另一个线程中。
所以答案是你应该使用其中一种后台线程机制,并在服务中执行此操作。