【问题标题】:Android using java servlets from an existing web applicationAndroid 使用来自现有 Web 应用程序的 java servlet
【发布时间】: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 登录。反正我能做到吗?

【问题讨论】:

    标签: java android servlets


    【解决方案1】:

    经过一番研究,这个问题的答案似乎是否定的。没有办法为 web 应用程序和 android 应用程序使用相同的 servlet。必须创建一个新的 servlet,无论这 2 个 servlet 的内容是否 95% 相同。

    目前我知道有几种方法可以使用android登录:

    1) 使用上面提到的 out.print 方法。创建PrintWriter对象,使用该对象做out.print,通过android java类中的response.toString().equals("expectedString")查看。

    2) cookie,我认为它可以工作,但没有,调度方法仍然妨碍了。关于 cookie,我仍然很模糊,但显然您可以将用户信息保存在 cookie 中,以便在使用应用程序的整个过程中对用户进行身份验证。

    如果我在上述任何一项中有错误,请随时添加答案或纠正我。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-20
      • 1970-01-01
      • 2013-04-18
      • 2015-07-10
      • 1970-01-01
      相关资源
      最近更新 更多