[英]Android using java servlets from an existing web application
我有一个现有的并且正在运行的Java Web应用程序。 我想使此应用程序在android上原生,并打算继续使用相同的servlet。
我上一次做与服务器通信的android应用程序时,将这样的内容放置在servlet中:
PrintWriter out = response.getWriter();
out.print("pass");
在android java类中,我会这样做:
String response = null;
try {
response = CustomHttpClient.executeHttpPost(
"http://10.0.2.2/ProjectName/" + "LoginServlet",postParameters);
String res = response.toString();
if(res.equals("pass")
{
/**do the things i want**/
}
}
catch(Exception e)
{
e.printStackTrace();
}
我的Web应用程序中的servlet使用HttpSession并具有如下的调度方法:
HttpSession session = request.getSession();
session.setAttribute("user",user);
和这个:
dispatch(request, response, "/login.jsp");
我将PrintWriter添加到了我的Web应用程序使用的现有servlet失败。 并且此错误是在logcat上产生的:
07-12 08:59:46.344: E/jdwp(487): >>> comparing 'jsp' to 'ers'
07-12 08:59:46.454: E/jdwp(487): >>> comparing 'jsp' to 'nfo'
07-12 08:59:46.524: E/jdwp(487): >>> comparing 'jsp' to 'o$1'
07-12 08:59:46.534: E/jdwp(487): >>> comparing 'jsp' to 'nfo'
07-12 08:59:46.534: E/jdwp(487): >>> comparing 'jsp' to 'o$1'
07-12 08:59:46.594: E/jdwp(487): >>> comparing 'jsp' to 'Key'
07-12 08:59:46.934: E/jdwp(487): >>> comparing 'jsp' to 'ver'
07-12 08:59:47.044: E/jdwp(487): >>> comparing 'jsp' to 'ile'
07-12 08:59:47.334: E/jdwp(487): >>> comparing 'jsp' to 'gin'
07-12 08:59:47.334: E/jdwp(487): >>> comparing 'jsp' to 'nfo'
07-12 08:59:47.354: E/jdwp(487): >>> comparing 'jsp' to 'ame'
07-12 08:59:47.404: E/jdwp(487): >>> comparing 'jsp' to 'ger'
07-12 08:59:47.404: E/jdwp(487): >>> comparing 'jsp' to 'eme'
07-12 08:59:47.504: E/jdwp(487): >>> comparing 'jsp' to 'ams'
并进行比较。
问题:我是否缺少某些内容,还是应该只创建新的servlet? (我真的希望它不是第二个选择)
编辑
我发现错误是由调度方法产生的,该方法将响应更改为jsp文件而不是文本字符串,并且注释掉调度方法使我可以使用android成功登录服务器。
但是,我想保留调度方法和PrintWriter,以便android应用程序和web应用程序都可以使用相同的单个servlet登录。 无论如何我能做到吗?
经过研究,这个问题的答案似乎是否定的。 无法为Web应用程序和android应用程序使用相同的servlet。 无论两个servlet的内容是否95%相同,都必须创建一个新的servlet。
我目前知道几种可以通过android登录的方法:
1)使用上述out.print方法。 创建PrintWriter对象,并使用该对象执行out.print,并通过android java类中的response.toString()。equals(“ expectedString”)进行检查。
2)cookie,我以为可以用,但是没有,派遣方法仍然受阻。 关于cookie,我仍然很模糊,但是显然您可以将用户信息保留在cookie中,以便在整个应用程序使用过程中对用户进行身份验证。
如果以上任何内容有误,请随时添加答案或纠正我。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.