服务器无法识别来自安卓手机的Cookie。

7

我正在尝试连接到Drupal服务器。过去我已经成功连接了,但现在Drupal开发者要求我添加另一个Cookie。但是,下面我尝试发送的Cookie服务器并没有注册。有没有人知道为什么?

public static void maybeCreateHttpClient() {
    if (mHttpClient == null) {
        mHttpClient = new DefaultHttpClient();
        final HttpParams params = mHttpClient.getParams();
        HttpConnectionParams.setConnectionTimeout(params,
            REGISTRATION_TIMEOUT);
        HttpConnectionParams.setSoTimeout(params, REGISTRATION_TIMEOUT);
        ConnManagerParams.setTimeout(params, REGISTRATION_TIMEOUT);



        BasicCookieStore cookieStore = new BasicCookieStore();
        ClientCookie cookie = new BasicClientCookie("aml", key);

        cookieStore.addCookie(cookie);

        localContext = new BasicHttpContext();
        localContext.setAttribute(ClientContext.COOKIE_STORE, cookieStore);


    }
}
2个回答

5
原来我不需要使用cookie、cookstore或httpcontent。据我所知,这些主要用于管理来自服务器的cookie。
我通过设置一个标题解决了我的问题,如下所示:
    String key = "whatever";

    post.addHeader("Cookie", "aml=" + key);

这可以用于httppost、httpget或httput。

对于如此简单的解决方案,我花了几天时间。希望它能帮助到其他人。


这是有道理的,因为Cookie通常来自服务器,不是吗? - njzk2
是的,会话ID和会话名称是的,但我发送的AML不是。问题是服务器在Android处理时无法识别单独的cookie。所以我需要以特定的方式发送它们。用逗号分隔而不是分号。 - jiduvah

-1
哦,如果你想知道为什么 cookie 没有被添加,那是因为你没有从 HTTP 客户端获取或添加 cookie 存储。你应该从客户端获取 cookie 存储,添加你的 cookies,然后执行你的请求。

但在这种情况下,它会发送它已经从服务器获取的cookie。这就是整个问题所在。 - jiduvah

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接