我有一个现有的和正在运行的 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?(我真的希望它不是第二种选择)
编辑
我发现错误是由 dispatch 方法产生的,该方法将响应更改为 jsp 文件而不仅仅是文本字符串,并且注释掉 dispatch 方法允许我使用 android 成功登录到服务器。
但是,我想保留调度方法和 PrintWriter,这样 android 应用程序和 Web 应用程序都可以使用同一个 servlet 登录。反正我能做到吗?