2011-05-29 54 views
3

我已经成功地设置了一个登录到我的drupal网站的Android应用。Drupal Android应用登录持久性

我的问题是登录的用户会话不会持续很长时间。该网站清楚地显示我的用户已登录到该网站,但在一个小时左右,用户不再在网站上显示为活动状态。 (我猜是因为我并不完全知道它。)

任何人都可以提供一个洞察,为什么发生这种情况?

的代码如下:

protected HttpResponse doInBackground(Void... params) { 
// TODO Auto-generated method stub 
    HttpClient httpClient = new DefaultHttpClient(); 
    HttpPost httpPost  = new HttpPost("http://mystestsite.com/testpoint/user/login"); 

     // TODO Auto-generated method stub 
     try{ 
      List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(); 
      nameValuePairs.add(new BasicNameValuePair("password", "guest")); 
      nameValuePairs.add(new BasicNameValuePair("username", "guest")); 
      httpPost.setEntity(new UrlEncodedFormEntity(nameValuePairs)); 

      //Execute HTTP post request 
      response = httpClient.execute(httpPost); 

      Log.i("SEEMS TO WORK", response.toString()); 
      Log.v("CODE", httpPost.getRequestLine().toString() + " - " + response.toString()); 

     }catch(Exception e){ 
      Log.e("HTTP ERROR", e.toString()); 
     } 
return response; 
} 
+0

我认为这取决于会话cookie是由Drupal设置多长时间。你还应该发布一些代码。 – 2011-05-29 11:58:38

+0

嗨卢卡斯Knuth, 我一直在这里发布一些代码,但它只是不会工作 – sisko 2011-05-29 23:22:01

+0

只需将代码发布在编辑器字段中,将其标记并按代码标签... – 2011-05-30 11:43:15

回答

0

所以,它听起来就像它与你如何设置你的cookies的问题。当我做这种事情时,我通常只是戳我的http头,直到他们看起来像从Web浏览器发送的头一样。问题在于知道Web浏览器和Android应用程序正在发送什么,所以在这里尝试一下。

这不一定是您的问题的代码解决方案,但可能会有所帮助。

使用查尔斯(伟大的工具)http://www.charlesproxy.com/为此。没有我与公司没有任何关系,它只是一个伟大的工具。

Charles有一个叫做反向代理的功能,基本上它允许你通过Charles将流量反弹到你的drupal服务器,并且可以在流入和流出你的应用时检查它。

使用charles,您可以嗅探来自您的Web浏览器的良好请求的样子,然后您可以嗅探您的Android应用程序的请求是什么样的。比较两者,你可以看到你的应用程序严重地改变了请求标题的位置。

调试阶段是这样的:

一旦你得到了查尔斯成立,打你的Drupal服务器几次,检查请求/响应,你从浏览器中看到的结构。

然后从android应用程序打了几次你的服务,并注意差异。也许cookie没有通过,也许它是畸形的,也许还有关于标题的其他内容。这将让你看到你需要拍摄什么,以便让Drupal接受请求。