java - 从 HTTP 请求设置 cookie

标签 java android

我已经使用 HttpRequest 获得了正确的登录信息。它在我的 toast 中打印正确的 html 形式的登录页面(仅用于测试)。现在我想根据该请求设置一个 cookie。这怎么可能? 如果有必要,我可以提供一些代码。

我已经知道 CookieManager 类,但是我怎样才能成功呢?

提前致谢!

我的代码:

    public String getPostRequest(String url, String user, String pass) {
    HttpClient postClient = new DefaultHttpClient();
    HttpPost httpPost = new HttpPost(url);
    HttpResponse response;

    try {
        List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2);
        nameValuePairs.add(new BasicNameValuePair("login", user));
        nameValuePairs.add(new BasicNameValuePair("pass", pass));
        httpPost.setEntity(new UrlEncodedFormEntity(nameValuePairs, HTTP.UTF_8));      

        response = postClient.execute(httpPost);

        if(response.getStatusLine().getStatusCode() == 200) {
            HttpEntity entity = response.getEntity();

            if (entity != null) {
                InputStream instream = entity.getContent();  
                String result = convertStreamToString(instream);                   
                instream.close();             

                return result;      
            }
        }
    } catch (Exception e) {}
    Toast.makeText(getApplicationContext(),
            "Connection failed",
            Toast.LENGTH_SHORT).show();
    return null; 
}

private String convertStreamToString(InputStream is) {
    BufferedReader reader = new BufferedReader(new InputStreamReader(is));
    StringBuilder sb = new StringBuilder();

    String line = null;
    try {
        while ((line = reader.readLine()) != null) {
            sb.append(line);
        }
    } catch (IOException e) {
        e.printStackTrace();
    } finally {
        try {
            is.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    return sb.toString();
}           

嗯,差不多就是这样了。 convertStreamToString() 函数将 InputStream 转换为一个 String(纯 HTML 代码),我将其“烤”出来只是为了测试它(因此它可以工作),所以代码可以正常工作。现在设置cookie。 :-)

这是我目前所达到的:

// inside my if (entity != null) statement
List<Cookie> cookies = postClient.getCookieStore().getCookies();
String result = cookies.get(1).toString();
                    return result;

当我登录后,CookieList id 1 包含一个值,否则该值是标准的。所以现在我知道值(value)的差异,但我该如何继续?

最佳答案

关于java - 从 HTTP 请求设置 cookie,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3715337/

相关文章:

android - achartengine:带阈值的折线图

java - 为什么在 this 方法中添加一个 If 语句会大大降低它的速度?

android 比例动画突然恢复到原始大小

android - 如何在 Android 中打开 pdf?

java - HttpResponse 响应字符串有额外的 `"` 并且无法识别 `\n`

java - 扭曲排序

java - JAXB 解码返回 null

java - 想要创建一个 servlet,它将发布的数据保存到基于 guid 文件名的文件中

java - 如何在 Java HashMap 中放入多个字符串值

android - 减少 Android 布局中的 View 层次结构