gpt4 book ai didi

android - 如何使用 Android 应用程序管理 session

转载 作者:行者123 更新时间:2023-11-29 16:10:56 25 4
gpt4 key购买 nike

我有一个 Android 应用程序,我在其中将 Multipart post 发送到 Servlet。但我需要将调用限制为每 5 分钟一次。通过网络表单,我可以使用 cookie。对于 android 应用程序,它不能那样工作。我怎样才能让它发挥作用?

最佳答案

要与服务器保持 http session ,您可以按照以下方法(假设您正在使用 HttpClient 进行通信):

每次服务器启动一个新 session 时,它都会发送一个 cookie 名称 Set-Cookie,其值包含可用作与服务器的 session ID 的 jessionid。因此,每次您对服务器进行网络调用时,在您的代码中检查响应中的此 cookie。如果此 cookie 存在,则检查它是否也有 jessionid。以下代码可用于检查和解析 Set-Cookie header 中的 jessionid。

HttpResponse response = httpClient.execute(get);

switch (response.getStatusLine().getStatusCode()) {
case 200:
parseSessionID(response);
//process the response
break;
}

private void parseSessionID(HttpResponse response) {
try {

Header header = response.getFirstHeader("Set-Cookie");

String value = header.getValue();
if (value.contains("JSESSIONID")) {
int index = value.indexOf("JSESSIONID=");

int endIndex = value.indexOf(";", index);

String sessionID = value.substring(
index + "JSESSIONID=".length(), endIndex);

Logger.d(this, "id " + sessionID);

if (sessionID != null) {
classStaticVariable= sessionID;
}

}
} catch (Exception e) {
}

}

将解析后的 id 存储在某个地方,以便以后可以访问。我通常在我的网络管理器中创建一个静态字段并在该字段中存储 jessionid。

现在,当您发出网络请求时,请按照以下代码设置 jessionid 所需的 cookie:

private void setDefaultHeaders(HttpUriRequest httpRequest, Request request) {

if (classStaticVariable!= null) {
httpRequest.setHeader("Cookie", "JSESSIONID=" + classStaticVariable);
}

}

在调用 HttpClient 执行方法之前调用此方法..

注意:我只使用基于 java 的服务器对其进行了测试。

关于android - 如何使用 Android 应用程序管理 session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13413839/

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