hezanyuan 2011-03-22 22:38
浏览 343
已采纳

用HttpClient怎么抓取URL中有jssessionid的页面数据

  • 写回答

1条回答 默认 最新

  • changchanghust 2011-03-23 00:24
    关注

    看了一下这个页面的流程,其实就是提交一个表单请求,服务器返回一个302重定向,指向http://www.spict.com/port/cntr/find_out_cntr.cfm?CFID=4922150&CFTOKEN=3f64c67d7fcb5bdc-DDB3676A-B65F-4490-91AC5683007B1B89&jsessionid=f030f747ce548af55e98591a1d18733d3960
    然后再跳转到最终页面的。

    可以先用程序模拟提交表单,然后根据响应的location头获取到重定向的地址,再发起请求来获取最终的页面内容。

    我写了个程序,大概试了一下,不知是否是你想要的效果。
    [code="java"]HttpClient httpclient = new DefaultHttpClient();
    HttpPost httppost = new HttpPost(
    "http://www.spict.com/port/cntr/select.cfm");

        //组装表单请求
        // radio1=cntr2&radio2=radio2&cntr=1&Submit3=%B2%E9%D1%AF
        List<NameValuePair> formparams = new ArrayList<NameValuePair>();
        formparams.add(new BasicNameValuePair("radio1", "cntr2"));  //集装箱号单选框
        formparams.add(new BasicNameValuePair("radio2", "outvsl")); //出口进口单选框
        formparams.add(new BasicNameValuePair("cntr", "1"));    //查询条件
        formparams.add(new BasicNameValuePair("Submit3", "查询"));
        UrlEncodedFormEntity entity = new UrlEncodedFormEntity(formparams,
                "GBK");
        httppost.setEntity(entity);
    
        //获取重定向地址
        HttpResponse response = httpclient.execute(httppost);
        System.out.println(response.getStatusLine());
        Header header = response.getFirstHeader("location");
        httppost.abort();
    
        //获取最终页面内容
        HttpGet httpget = new HttpGet("http://www.spict.com/port/cntr/" + header.getValue());
        HttpResponse response2 = httpclient.execute(httpget);
        System.out.println(EntityUtils.toString(response2.getEntity()));[/code]
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 matlab中使用gurobi时报错
  • ¥15 WPF 大屏看板表格背景图片设置
  • ¥15 这个主板怎么能扩出一两个sata口
  • ¥15 不是,这到底错哪儿了😭
  • ¥15 2020长安杯与连接网探
  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么
  • ¥15 banner广告展示设置多少时间不怎么会消耗用户价值
  • ¥16 mybatis的代理对象无法通过@Autowired装填
  • ¥15 可见光定位matlab仿真
  • ¥15 arduino 四自由度机械臂