【发布时间】:2012-07-12 00:28:25
【问题描述】:
我有一个现有的并且可以运行的 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.log 成功登录到服务器。
但是,我想保留调度方法和 PrintWriter,这样 android 应用程序和 Web 应用程序都可以使用同一个 servlet 登录。反正我能做到吗?
【问题讨论】: