我已经成功设置了一个 Android 应用程序,可以登录到我的 drupal 网站。
我的问题是登录的用户会话不会持续很长时间。该网站清楚地显示我的用户已登录该网站,但在一个小时左右的时间内,该用户不再在该网站上显示为活动状态。 (我猜测是因为我不太清楚。)
谁能深入了解为什么会发生这种情况?
代码如下:
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;
}
所以这听起来像是您如何设置 cookie 的问题。当我做这种事情时,我通常只是查看我的 http 标头,直到它们看起来与从 Web 浏览器发送的标头相同。问题是知道网络浏览器和 Android 应用程序正在发送什么,所以这里有一些可以尝试的东西。
这不一定是您问题的代码解决方案,但可能会有所帮助。
使用 Charles(很棒的工具)http://www.charlesproxy.com/ http://www.charlesproxy.com/为了这。不,我与该公司没有任何联系,它只是一个很棒的工具。
Charles 中有一个称为反向代理的功能,基本上它允许您将流量通过 Charles 反弹到您的 drupal 服务器,并且您可以在流量流入和流出您的应用程序时对其进行检查。
使用 charles,您可以嗅探来自网络浏览器的良好请求是什么样子,然后您可以嗅探来自 Android 应用程序的请求是什么样子。比较两者,您可以看到您的应用程序在哪里严重影响了请求标头。
调试阶段是这样的:
一旦您设置了 Charles,请访问您的 drupal 服务器几次并检查您从浏览器看到的请求/响应的结构。
然后从 Android 应用程序中点击您的服务几次并记下差异。也许 cookie 没有通过,也许它格式错误,也许标头还有其他问题。这将使您了解需要做什么才能让 Drupal 接受请求。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)