【问题标题】:How to get cookies after POST request in Android?如何在 Android 中的 POST 请求后获取 cookie?
【发布时间】:2014-01-19 00:51:04
【问题描述】:

这是我的类的 doInBackground 方法,它扩展了 AsyncTask 以执行 POST 请求

@Override
protected Integer doInBackground(String... arg0) {

    HttpClient client = new DefaultHttpClient();

    Log.d("HTTP", "URL:" + arg0[0]);
    HttpPost post = new HttpPost(arg0[0]);

    try {
        // Add your data
        post.setEntity(new UrlEncodedFormEntity(login)); 

        // Execute HTTP Post Request
        HttpResponse response = client.execute(post);

        //to Log the response headers
        Header[] headers = response.getAllHeaders();
        for (int i=0; i < headers.length; i++) {
            Header h = headers[i];
            Log.i("Header","Header names: "+h.getName());
            Log.i("Header", "Header Value: "+h.getValue());
        }

        int respCode = response.getStatusLine().getStatusCode();
        Log.d("HTTP", "POST:"+arg0[0]+" Risposta Server dopo invio: "+respCode);

        return respCode;
    } catch (IOException e) {
        // Gestire nel codice finale
        e.printStackTrace();
    }

这是日志猫:

01-18 14:44:26.532:I/Header(591):标题名称:日期

01-18 14:44:26.543:I/Header(591):标题值:2014 年 1 月 18 日星期六 14:44:21 GMT

01-18 14:44:26.543:I/Header(591):标头名称:服务器

01-18 14:44:26.543:I/Header(591):标头值:Apache

01-18 14:44:26.543:I/Header(591):标头名称:Set-Cookie

01-18 14:44:26.543: I/Header(591): 标头值: session_id=29ae962bcc7cbb648c4b2e35b2a7b4f6;路径=/;域=.forumcommunity.net; HttpOnly

01-18 14:44:26.543:I/Header(591):标题名称:X-Frame-Options

01-18 14:44:26.553:I/Header(591):标题值:DENY

01-18 14:44:26.553:I/Header(591):标头名称:Set-Cookie

01-18 14:44:26.553: I/Header(591): 标头值: member_id=8712154;过期=太阳, 格林威治标准时间 2015 年 1 月 18 日 14:44:21;路径=/;域=.forumcommunity.net; HttpOnly

01-18 14:44:26.553:I/Header(591):标头名称:Set-Cookie

01-18 14:44:26.572: I/Header(591): 标头值: pass_hash=83e8e0213aa10058b2d014bc0331598d6076bd23f145d03b6ee8a31b2eb25e96;过期=星期日,2015 年 1 月 18 日 14:44:21 GMT;路径=/;域=.forumcommunity.net; HttpOnly

01-18 14:44:26.572:I/Header(591):标题名称:变化

01-18 14:44:26.572:I/Header(591):标头值:Accept-Encoding

01-18 14:44:26.572:I/Header(591):标题名称:P3P

01-18 14:44:26.582:I/Header(591):标头值:CP="NOI ADM DEV COM OUR STP"

01-18 14:44:26.582:I/Header(591):标题名称:连接

01-18 14:44:26.582: I/Header(591): 标头值: 关闭

01-18 14:44:26.602:I/Header(591):标头名称:传输编码

01-18 14:44:26.602:I/Header(591):标头值:分块

01-18 14:44:26.602:I/Header(591):标题名称:Content-Type

01-18 14:44:26.602: I/Header(591): 标头值: text/html; charset=windows-1252

如何仅获取 Set-Cookie 标头并将其解析到 Cookie 列表中?

【问题讨论】:

    标签: android cookies android-asynctask


    【解决方案1】:

    查看这个在 HTTP 请求后访问 cookie 的示例: http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/httpclient/src/examples/org/apache/http/examples/client/ClientCustomContext.java

    client.execute() 之后使用此代码获取cookie:

    List&lt;Cookie&gt; cookies = cookieStore.getCookies();

    【讨论】:

    • 是否可以使用 HttpContext 而不是 HttpClientContext 和 HttpResponse 而不是 CloseableHttpResponse 来做同样的事情?
    • 是的,它们是相同的类,只是在 Android 上的命名不同。
    猜你喜欢
    • 2014-01-15
    • 2013-02-03
    • 1970-01-01
    • 2017-09-02
    • 2015-10-23
    • 1970-01-01
    • 1970-01-01
    • 2017-06-08
    • 1970-01-01
    相关资源
    最近更新 更多