我用IE访问如下地址并且在客户端已经生成了cookie的,但是我用httpClient访问,服务器就是读取不到这个已经生成的cookie,这个是怎么回事呀?
//构造HttpClient的实例
  HttpClient httpClient = new HttpClient();
  //创建GET方法的实例
  GetMethod getMethod = new GetMethod("http://www.ibm.com");
  //使用系统提供的默认的恢复策略
  getMethod.getParams().setParameter(HttpMethodParams.RETRY_HANDLER,
    new DefaultHttpMethodRetryHandler());
  try {
   //执行getMethod
   int statusCode = httpClient.executeMethod(getMethod);
   if (statusCode != HttpStatus.SC_OK) {
    System.err.println("Method failed: "
      + getMethod.getStatusLine());
   }
   //读取内容 
   byte[] responseBody = getMethod.getResponseBody();
   //处理内容
   System.out.println(new String(responseBody));
  } catch (HttpException e) {
   //发生致命的异常,可能是协议不对或者返回的内容有问题
   System.out.println("Please check your provided http address!");
   e.printStackTrace();
  } catch (IOException e) {
   //发生网络异常
   e.printStackTrace();
  } finally {
   //释放连接
   getMethod.releaseConnection();
  }
难道Cookie还得自己维护,httpClient不负责维护?请达人指教一二。

解决方案 »

  1.   

    你是要带着cookie过去吧
    post.setRequestBody(new NameValuePair("cookie", cookie));
      

  2.   

    PostMethod post = new PostMethod(url);
    post.setRequestBody(new NameValuePair("cookie", cookie));
      

  3.   

    我用
    Cookie cookie  = new Cookie();
    cookie.setDomain("klgx-d-sub");
    cookie.setName("CASTGC");
    cookie.setPath("/EasySecuritySSO");
    cookie.setValue("TGT-6-bgxl3BSgDgDZrgBSBvoVYj9NB6s7JlvhhcWJwliK2cZ2bR7r06-cas");


    HttpState initState = new HttpState();
    initState.addCookie(cookie);
    httpClient.setState(initState);
    这样倒是传到后台了,但是我想的是,怎么httpClient不是自己维护cookie吗,怎么还要我亲手set进取一个cookie呀,那么如果我想set进取我客户端一个cookie,那怎么读取客户端的cookie然后set进我的httpClient里面去呢?
      

  4.   

    你可以在客户端写一个获得cookie的程序,然后用httpClient来访问获得;
      

  5.   

    还要这样呀,httpClient做的也太差劲了,我觉得应该有相应的API实现的,跪求各位达人献上良策。