android - 在android中维护 session (应用程序在服务器端保持身份验证)

标签 android session http-headers session-state

我正在 android 中构建一个登录应用程序,在该应用程序中,我点击了一个 url(带有用户名和密码)直到该部分它工作正常,但之后每当我点击一个 url(一旦用户通过身份验证),它什么都不返回(即,请先登录之类的错误消息)。但是它在非常相似的 iphone 应用程序和浏览器上运行良好。

我知道这是 phpSessionId 的错误(即 session 被销毁以进行进一步请求),如果我们希望我们的 Android 应用程序在服务器端保持身份验证,我们需要在第一次连接后获取该 id 然后发送它在我们所有后续请求的 header 中。

但问题是我无法从第一个连接的 header 中获取 sessionId 并将其与进一步的请求一起发送。

请给我一些代码或链接以正确完成任务。 谢谢。

最佳答案

最后我解决了 Android 中的 session 处理问题。 Android 不能处理 session 本身(一个简单的浏览器可以)所以我们必须明确地处理它。 我稍微更改了 http 连接的代码。 建立连接时在第一个 Activity 中创建 DefaultHttpClient 的实例。

public static DefaultHttpClient httpClient;

第一次连接,我做了以下操作:

URL url=new URL(urlToHit);
LoginScreen.httpClient = new DefaultHttpClient(); //LoginScreen is the name of the current Activity

HttpPost httppost = new HttpPost(url.toString());
HttpResponse response = LoginScreen.httpClient.execute(httppost); 

xr.parse(new InputSource(url.openStream())); //SAX parsing

现在对于所有进一步的连接,我使用了相同的 httpClient 例如在下一个 Activity 中:

URL url=new URL(urlToHit);

HttpPost httppost = new HttpPost(url.toString());
HttpResponse response = LoginScreen.httpClient.execute(httppost); 

// Log.v("response code",""+response.getStatusLine().getStatusCode());

// Get hold of the response entity
HttpEntity entity = response.getEntity();

InputStream instream = null;

if (entity != null) {
    instream = entity.getContent();
}
xr.parse(new InputSource(instream)); //SAX parsing

希望这也能帮助大家解决Android 中的 session 问题

关于android - 在android中维护 session (应用程序在服务器端保持身份验证),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5960832/

相关文章:

Android LocationClient onDisconnect 不会被调用

android - 检查在抽屉中选择了哪个项目

android - 在 Kotlin 中进行单元测试的 BuildConfigField 模拟

java - 如何在 Google App Engine (Java) 中启用 session 支持?

javascript - Open.window() Document.referrer 从 HTTPS 站点到 HTTP 站点为空

android - 两个不同的 AsyncTasks 同时执行

php - 为什么 ( $_SESSION = [];) 使服务器无法处理请求?

java - 管理同一台计算机上 Play 框架服务器的多个实例的 session 详细信息

javascript - 如何为HTTP GET 请求设置header,并触发文件下载?

http-headers - HTTP/1.1 header 的新行定义