0 0

httpclient请求得到的页面能否得到cookie0

如题,我用httpclient模拟登录以后得到了页面内容,我直接用我的servlet的response把内容write到页面的话httpclient里面cookie会不会也跟着写进去

问题补充:我用httpclient模拟登录CAS,cookie我是可以拿到的,关键是怎么把cookie放到后续请求当中,我现在实现的方式是直接redirect,然后再过滤器里面判断并添加CAS的cookie,但是在火狐里面只是看到请求里面有:
Set-Cookie
CASPRIVACY=true; Domain=hisome; Path=/cas/; Secure CASTGC=TGT-19-Lfh5AfNYuarcMgZ6u9L4MNuqzDDiga4p4Y6ickZeMbgHj0mrPp-cas01.example.org; Domain=hisome; Path=/cas/; Secure JSESSIONID=E9525B624DBBB21656269B7223FC28A2; Domain=hisome; Path=/cas; Secure
这些cookie并不是会话状态,请问怎么处理Set-Cookie并生成会话

问题补充:httpclient是模拟浏览器操作吧,是不是httpclient执行结束了以后相当于关闭浏览器,会话和cookie都会丢失?但是我模拟登陆的要求是吧后台执行的请求获得的会话纳入我的浏览器里面。现在的情况是我response.addCookie以后跳转到其他链接的时候filter总是检测不到cookie

问题补充:模拟登录的cookie里面的domain和path属性是不是相应的要变化呢?是否要换成代理登录的服务器的domain和path
2012年12月20日 10:43

8个答案 按时间排序 按投票排序

1 0

cookie 通过 CookieSpec cookiespec = CookiePolicy.getDefaultSpec();来查看

package http.demo; 
import org.apache.commons.httpclient.*;
import org.apache.commons.httpclient.cookie.*;
import org.apache.commons.httpclient.methods.*;
/** 
* 用来演示登录表单的示例 
* @author Liudong 
*/
public class FormLoginDemo {
   static final String LOGON_SITE = "localhost" ;
   static final int     LOGON_PORT = 8080;
   public static void main(String[] args) throws Exception{
      HttpClient client = new HttpClient();
      client.getHostConfiguration().setHost(LOGON_SITE, LOGON_PORT);
      // 模拟登录页面 login.jsp->main.jsp
      PostMethod post = new PostMethod( "/main.jsp" );
      NameValuePair name = new NameValuePair( "name" , "ld" );
      NameValuePair pass = new NameValuePair( "password" , "ld" );
      post.setRequestBody( new NameValuePair[]{name,pass});
      int status = client.executeMethod(post);
      System.out.println(post.getResponseBodyAsString());
      post.releaseConnection();
      // 查看 cookie 信息
      CookieSpec cookiespec = CookiePolicy.getDefaultSpec();
      Cookie[] cookies = cookiespec.match(LOGON_SITE, LOGON_PORT, "/" , false , client.getState().getCookies());
      if (cookies.length == 0) {
         System.out.println( "None" );
      } else {
         for ( int i = 0; i < cookies.length; i++) {
            System.out.println(cookies[i].toString());
         }
      }
      // 访问所需的页面 main2.jsp 
      GetMethodget=newGetMethod("/main2.jsp");
      client.executeMethod(get);
      System.out.println(get.getResponseBodyAsString());
      get.releaseConnection();
   }
}

2012年12月20日 11:20
0 0

手动保存,手动提交

2012年12月20日 22:58
0 0

我贴的连接

http://www.cnblogs.com/loveyakamoz/archive/2011/07/21/2113246.html
里已经有演示代码了啊
是用CookieStore来保存Cookie的

HttpClient httpclient = new DefaultHttpClient(); 
// 创建cookie store的本地实例
CookieStore cookieStore = new BasicCookieStore();
// 创建本地的HTTP内容
HttpContext localContext = new BasicHttpContext();
// 绑定定制的cookie store到本地内容中
localContext.setAttribute(ClientContext.COOKIE_STORE, cookieStore);
HttpGet httpget = new HttpGet("http://www.google.com/"); 
// 作为参数传递本地内容 
HttpResponse response = httpclient.execute(httpget, localContext)

2012年12月20日 18:13
0 0

我记得要设置一个策略,让httpclient保存cookie的。支持一下!

2012年12月20日 17:39
0 0

第一次访问是有cookie返回的,后续你要将cookie添加到头上去。

2012年12月20日 12:52
0 0

http://www.cnblogs.com/loveyakamoz/archive/2011/07/21/2113246.html

最后一个
每个用户/线程的状态管理

2012年12月20日 12:16
0 0

我记得要设置一个策略,让httpclient保存cookie的。

2012年12月20日 12:12
0 0

servlet中要调用response.addCookie方法才能把cookie返回给客户端。write是写不了cookie的。

response.addCookie(new Cookie("name","value"));

2012年12月20日 11:37

相关推荐

    httpUtil httpclient 登陆携带cookie访问下一个连接

    `HttpClient`会自动将cookie添加到请求头中,这样服务器就能识别出已登录的用户。 7. **处理结果**:执行`HttpGet`请求后,再次获取`HttpResponse`,处理返回的数据。你可以读取响应体,进行HTML解析或者其他业务...

    Java 使用HttpClient保持SESSION状态

    6. **设置HttpClient的Cookie管理器**:将CookieStore与HttpClient关联,以便在后续请求中自动添加Cookie。 ```java RequestConfig config = RequestConfig.custom().setCookieSpec(CookieSpecs.DEFAULT).build(); ...

    HttpClient以及获取页面内容应用

    3.调用HttpClient对象的execute(HttpUriRequest request)发送请求,该方法返回一个HttpResponse。 client.executeMethod(method); 5. 调用HttpResponse的getAllHeaders()、getHeaders(String name)等方法可获取...

    httpclient

    4. **执行请求并获取响应**:使用HttpClient的execute方法执行请求,得到HttpResponse对象。 ```java CloseableHttpResponse response = httpClient.execute(httpGet); ``` 5. **处理响应**:从HttpResponse中获取...

    HttpClient 登录163邮箱

    当收到包含Set-Cookie头的响应时,HttpClient会自动保存cookie,并在后续请求中发送它们。 7. **源码分析** 博文链接提供的源码可能展示了如何利用HttpClient库构造请求,发送登录数据,处理响应,以及如何解析...

    用HttpClient来模拟浏览器GET_POST

    HttpClient提供了COOKIE处理机制,允许我们轻松地处理COOKIE问题。 HttpClient是一个非常有用的工具,帮助我们轻松地模拟浏览器GET_POST,解决了我们在编写HTTP客户端程序时经常碰到的几个问题。

    httpclient自动注册网站

    HttpClient支持Cookie管理,可以设置`CookieStore`来保存和发送Cookie。 8. **异常处理**:在实现自动注册功能时,需要处理可能出现的各种异常,如网络连接问题、无效的响应等。 9. **重试机制**:为了提高稳定性...

    java httpclient 模拟登录

    在"java httpclient 模拟登录"这个场景下,我们通常会用到HttpClient来模拟用户登录网站的过程,获取登录后的session信息,以便后续能够访问登录后才能看到的页面内容。以下将详细介绍如何使用Java HttpClient进行...

    httpclient如何保持session会话模拟登录后的操作

    在IT行业中,网络编程是必不可少的一部分,而HTTPClient作为Java中的一个强大库,常用于处理HTTP请求和响应。本文将详细讲解如何使用HTTPClient来保持session会话,从而实现模拟登录后的其他操作。 首先,理解...

    httpclient 获取技术博客列表

    标题中的“httpclient 获取技术博客列表”指的是使用Apache HttpClient库来获取网络上的技术博客列表。HttpClient是一个Java库,它提供了一种丰富的API来执行HTTP请求,包括GET、POST等方法,用于从网页抓取数据。在...

    HttpClient介绍和使用文档

    例如,当需要访问需要用户登录或认证的页面时,HttpClient可以方便地管理COOKIE,模拟浏览器的行为。在处理文件上传的问题上,HttpClient也提供了便捷的方法,使得开发者可以轻松地发送POST请求并附带文件数据。 ...

    (最新)HttpClient4模拟登录腾讯微博

    如果登录成功,后续的请求可以复用这个带有Cookie的HttpClient实例,以便维持会话状态。例如,要访问用户主页,只需构造一个新的HttpGet请求,并设置相应的URL。 在实际应用中,`h_login_11.js`文件可能是腾讯微博...

    HttpClient登录

    在文件名列表中的"photo163"可能是网易相册的某种标识,如果这是登录后访问的资源,你可能需要在登录成功后,使用相同的`HttpClient`实例来发送新的GET请求获取资源。 总的来说,HttpClient提供了一套强大的工具来...

    新浪,腾讯微博HttpClient4模拟登陆

    6. **执行请求**:调用HttpClient的`execute`方法发送请求,获取`HttpResponse`对象。 7. **处理响应**:检查响应状态码,如果成功(通常是200),则登录成功。此时,可以从响应头获取新的Cookie,存入CookieStore...

    httpclient模拟登录实例

    4. **执行请求**:现在,我们有了完整的请求,可以使用HttpClient的execute方法发送它。 ```java CloseableHttpResponse response = httpClient.execute(httpPost); ``` 5. **处理响应**:执行请求后,我们需要...

    httpClient+jsoup 抓取网页数据

    在"网易贵金属"的例子中,你可能需要使用HttpClient发送GET请求到网易贵金属的页面,然后使用Jsoup解析返回的HTML,找到包含贵金属价格、新闻等信息的部分,从而实现数据抓取。实际操作时,可能还需要考虑登录、分页...

    JAVA-用HttpClient来模拟浏览器GET,POST.docx

    JAVA使用HttpClient模拟浏览器GET、POST请求 在本文中,我们将介绍如何使用Apache Commons HttpClient库来模拟浏览器的GET和POST请求。HttpClient库是一个开放源码的项目,是Apache Commons项目的一部分,旨在简化...

    HttpClient_学习整理.

    ### HttpClient 学习整理 #### 一、简介 `HttpClient`是Apache Jakarta Commons下的一个子项目,用于提供高效、最新及功能丰富的HTTP客户端编程工具包。对于那些希望通过HTTP协议访问网络资源的Java应用程序而言,...

Global site tag (gtag.js) - Google Analytics