Android:Singleton DefaultHttpClient 不会保持 session

标签 android

我在我的 Android 应用程序中使用 DefaultHttpClient 的单例实例,以便在登录后与我的网站的 session 在多个 Activity 中保持身份验证。

这是 DefaultHttpClient 的单例类:

public class Client {
  private static DefaultHttpClient instance = null;
  //handler for current response in UI thread after receiving it in AsyncTask
  private static HttpResponse currentResponse = null;

  //I also tried this without "synchronized"
  public synchronized static DefaultHttpClient getInstance()
  {
  if(instance == null)
    {
      instance = new DefaultHttpClient();
    }
    return instance;
  }
  public static void setCurrentResponse(HttpResponse response)
  {
    currentResponse = response;
  }
  public static HttpResponse getCurrentResponse()
  {
    return currentResponse;
  }
}

每次在使用 Client.getInstance() 的 AsyncTask 中使用客户端时,我都会调用客户端。

我试过:

ClientInstance = Client.getInstance();
Client.setCurrentResponse(ClientInstance.execute(HttpPost to execute));

我试过:

Client.setCurrentResponse(Client.getInstance().execute(HttpPost to execute));

以及我通过搜索找到的许多其他解决方法。

我也尝试过使用 CookeStore 和 HttpContext,它们产生相同的结果。

当我从响应中获取实体时,在实体上使用 consumeContent() 也无法解决问题。

我发现的所有内容都表明使用 DefaultHttpClient 的单例实例允许它维持其 session ,但每次我执行帖子以执行我的网站要求用户登录的操作时,我得到的响应正文返回显示错误,指示未设置“user_id” session 变量(因此用户未登录)。我已经详尽地搜索了 Google 和 Stack Overflow,但无济于事。有人可以指出我做错了什么吗?

最佳答案

抱歉这个问题,伙计们。

在我几乎失去理智之后,我又看了一遍我的 php 代码。事实证明问题出在我的网页上——我不允许 php 在接收到移动 HttpPost 时调用 session_start()。谁知道呢,也许我的问题/答案会对其他人有所帮助。

关于Android:Singleton DefaultHttpClient 不会保持 session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13094187/

相关文章:

android - Intents 目录及其使用方法

android - 如何获取动态添加到 LinearLayout 中的点击 subview 的 ID?

android - 将谷歌设置为主屏幕中的搜索栏以编程方式自定义启动器

android - 无线 (Wifi) 聊天应用程序

当列表填满屏幕时,列表下方的 android 元素消失了

android - 实现华为移动服务

Android Developer Console 屏幕截图被裁剪。还有谁有相同的问题吗?建议?

android - java.lang.NoClassDefFoundError : Failed resolution of: Lcom/google/android/gms/vision/face/FaceDetector;

php - 将 Firebase token 发送到自己的服务器不起作用

javascript - 视频方向javascript