本帖最后由 lishuiqing 于 2012-11-15 17:25:10 编辑

解决方案 »

  1.   

    你后面使用url访问的时候 原来的URL后面加个jsessionid=xxxxxxxxxx 就应该可以吧
    例如
    http://127.0.0.1:8080/myTest/uploadBlogPhotoAction.action;jsessionid=xxxxxxxxxxx
      

  2.   

    HttpClient自带Cookie管理能力,也就是可以管理好你那个jSessionID从你描述的情况来看,大致两种可能:
    1、登录过程实际上失败了,或者没有完成;
    2、目标网站用了更复杂的技术来防止 机器人 登录,最常用的就是复杂JS计算等。
      

  3.   

    不行的。我已经解决问题了。DefaultHttpClient httpclient = new DefaultHttpClient(
    new ThreadSafeClientConnManager());

    try { HttpPost httpost = new HttpPost(url);
    // 添加参数
    List<NameValuePair> nvps = new ArrayList<NameValuePair>();
    if (params != null && params.keySet().size() > 0) {
    Iterator iterator = params.entrySet().iterator();
    while (iterator.hasNext()) {
    Map.Entry entry = (Entry) iterator.next();
    nvps.add(new BasicNameValuePair((String) entry.getKey(),
    (String) entry.getValue()));
    }
    }
    //设置请求的编码格式
    httpost.setEntity(new UrlEncodedFormEntity(nvps, Consts.UTF_8));
    //登录一遍
    httpclient.execute(httpost); 
    //然后再第二次请求普通的url即可。
    httpost = new HttpPost(url2);
    BasicResponseHandler responseHandler = new BasicResponseHandler(); 
    System.out.println(httpclient.execute(httpost, responseHandler));
    } finally {
    // 关闭请求
    httpclient.getConnectionManager().shutdown();
    }
      

  4.   

    主要是上面的
    DefaultHttpClient httpclient = new DefaultHttpClient(
                    new ThreadSafeClientConnManager());
      

  5.   

    楼主,我按照你这样改了,第二次请求的sessionid还是无效的,能请教一下是什么原因吗