android如何保养session

android how to maintain session

我正在 android 中构建一个登录应用程序,其中我正在点击 url(使用用户名和密码)直到那部分它工作正常但是之后每当我点击 url(一旦用户通过身份验证),它 return 什么都没有(即错误消息,如请先登录)。

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

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

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

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

public static DefaultHttpClient httpClient;

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

public class 服务处理程序 {

static String response = null;
public final static int GET = 1;
public final static int POST = 2;

public ServiceHandler() {

}

public String makeServiceCall(String url, int method) {
    return this.makeServiceCall(url, method, null);
}

public String makeServiceCall(String url, int method,
        List<NameValuePair> params) {
    try {

        // http client

        HttpEntity httpEntity = null;
        HttpResponse httpResponse = null;

        // Checking http request method type
        if (method == POST) {
            HttpPost httpPost = new HttpPost(url);
            // adding post params
            if (params != null) {
                httpPost.setEntity(new UrlEncodedFormEntity(params));
            }

            httpResponse = MainActivity.httpClient.execute(httpPost);

        } else if (method == GET) {
            // appending params to url
            if (params != null) {
                String paramString = URLEncodedUtils
                        .format(params, "utf-8");
                url += "?" + paramString;
            }
            HttpGet httpGet = new HttpGet(url);

            httpResponse = MainActivity.httpClient.execute(httpGet);

        }
        httpEntity = httpResponse.getEntity();
        response = EntityUtils.toString(httpEntity);

    } catch (UnsupportedEncodingException e) {
        e.printStackTrace();
    } catch (ClientProtocolException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }

    return response;

}

}

调用方式如下

jsonStr = sh.makeServiceCall(url, ServiceHandler.GET);

这也将帮助我解决 Android 中的会话问题。