gpt4 book ai didi

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

转载 作者:IT老高 更新时间:2023-10-28 21:46:23 24 4
gpt4 key购买 nike

我正在 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com