httpclient-java 利用 httpClient 模拟登陆网站时,网站重定向,我该怎么进入后继的网页啊!

问题描述

java 利用 httpClient 模拟登陆网站时,网站重定向,我该怎么进入后继的网页啊!

我用的是httpclient4.3.6 。我模拟登陆我们学校的网站,获取了cookies,但是我用httpwatch看 有重定向的问题,我不知道怎么进入后面的网页!求解!我贴上代码,求代码详解,谢谢!!!小弟初学java 现需要做这个操作,很是艰难呀!感激不尽!

解决方案

public class Test {

public static void main(String[] args) throws Exception {
    BasicCookieStore cookieStore = new BasicCookieStore();
    CloseableHttpClient httpclient = HttpClients.custom()
            .setDefaultCookieStore(cookieStore)
            .build();
    try {
        HttpUriRequest login = RequestBuilder.post()
                .setUri(new URI("http://portal.sicnu.edu.cn:82/cas/login"))
                .addParameter("action","DCPLogin")
                .addParameter("encodedService","http%3a%2f%2fportal.sicnu.edu.cn%2fcas.jsp")
                .addParameter("lt","LT_M5000-R_-592543-IhH4ao22pYE5PM83cHXa")
                .addParameter("password", "123456")
                .addParameter("service","http://portal.sicnu.edu.cn/cas.jsp")
                .addParameter("serviceName","null")
                .addParameter("username", "2013110401")
                .build();
        String MainURL = "http://portal.sicnu.edu.cn/portal/media-type/html/role/school/page/default.psml/js_pane/P-132fb077a30-1000d";

        CloseableHttpResponse response2 = httpclient.execute(login);
        try {
            HttpEntity entity = response2.getEntity();
            System.out.println("Login form get: " + response2.getStatusLine());
            EntityUtils.consume(entity);
            System.out.println("Post logon cookies:");
            List<Cookie> cookies = cookieStore.getCookies();

            if (cookies.isEmpty()) {
              System.out.println("None");
            } else {
                for (int i = 0; i < cookies.size(); i++) {
                    System.out.println("- " + cookies.get(i).toString());
               }
            }finally{
                                   response2.close();
                            }
                            }finally{
                                  httpclient.close();
                            }

解决方案二:

httpwatch 看到的

解决方案三:

httpclient在登录的时候,你要做个处理,检测返回的状态吗不是200,如果是300系列,你的代码需要模拟浏览器的行为,根据返回的location地址,浏览器重新
向location指向的地址发送请求。这个就是重定向,浏览器也是这么干的,浏览器默认重定向一次最多支持5次重定向。

解决方案四:

httpclient实现登录过程中会生成一个client对象,只要不关闭这个对象,client对象会记录这个登陆网站的临时session id。你可以重用这个client post或者get操作到你的目标url。

时间: 2024-08-07 20:22:06

httpclient-java 利用 httpClient 模拟登陆网站时,网站重定向,我该怎么进入后继的网页啊!的相关文章

JAVA利用HttpClient进行POST请求(HTTPS)实例_java

最近,需要对客户的接口做一个包装,然后供自己公司别的系统调用,客户接口是用HTTP URL实现的,我想用HttpClient包进行请求,同时由于请求的URL是HTTPS的,为了避免需要证书,所以用一个类继承DefaultHttpClient类,忽略校验过程. 1.写一个SSLClient类,继承至HttpClient package com.pcmall.service.sale.miaomore.impl; import java.security.cert.CertificateExcept

代码-java 如何实现模拟登陆智联或者前程无忧 并且将当前帐号其中的所有发布中的职位刷新。

问题描述 java 如何实现模拟登陆智联或者前程无忧 并且将当前帐号其中的所有发布中的职位刷新. java代码, 如何实现模拟登陆智联或者前程无忧 并且将当前帐号其中的所有发布中的职位刷新.有几页刷新几页. 最好有详细代码 解决方案 下个loadrunner 全过程录一遍 是最简单的 解决方案二: 求不沉 求回答!!!!!!!!!!!!!!!!!! 解决方案三: 000000000000000

邮箱登陆发短信-如何用java代码,模拟登陆139邮箱,并用139邮箱自带的短信功能给一个移动用户发送短信

问题描述 如何用java代码,模拟登陆139邮箱,并用139邮箱自带的短信功能给一个移动用户发送短信 RT 要是能说到要用到哪些知识点,以及直接提供相应的代码那就更好了

爬虫-用python模拟登陆csdn时参数lt要如何获得?

问题描述 用python模拟登陆csdn时参数lt要如何获得? 网上看到代码是用正则表达式,可是我打印出来的网页代码里没有相关的内容,运行 代码用findall返回的也是一个空列表..请问应该在哪里得到lt参数? 解决方案 可能是js运行时动态生成. 解决方案二: 你把你登录时候的lt参数值复制下来,填充到你的程序里面试试.

Java利用HttpClient模拟POST表单操作应用及注意事项_java

HttpClient使用post方法提交数据 源代码: 复制代码 代码如下: package post; import Java.io.IOException; import org.apache.commons.httpclient.Header; import org.apache.commons.httpclient.HttpClient; import org.apache.commons.httpclient.HttpException; import org.apache.commo

Shell 利用 curl 模拟登陆

-b 参数 指定使用cookie文件 -c是往cookie文件中写cookie -d 是指定此次登录所需的参数,通过httpfox查看 -L 指定页面自动跳转 #curl -c ck.txt --user-agent Mozilla/4.0 -d "username=****&password=*****&server_id=1&submit=true" 登陆的url #curl -c ck.txt -b ck.txt --user-agent Mozilla/

java-用JAVA HttpClient模拟登陆网站时登陆成功后网站重定向,请问一下 怎么解决???谢谢拉

问题描述 用JAVA HttpClient模拟登陆网站时登陆成功后网站重定向,请问一下 怎么解决???谢谢拉 我觉得最有问题的地方就是我没有触发这个js事件 js的部分代码如下 通过这个JS代码我猜测YAHOO.util.Connect.asyncRequest('xxx','XXX', callback, null) 和我直接通过get和post请求服务器 服务器处理的话会有些许不同 . 并且我通过post请求登陆后 服务器返回了我 这代表登陆成功了 可是 当请求成功后 转向网站的个人主页的时

有人做过java httpclient 模拟登陆outlook 获取邮件的吗

问题描述 有人做过java httpclient 模拟登陆outlook 获取邮件的吗 有人做过java httpclient 模拟登陆outlook 获取邮件的吗 解决方案 其实现在很多可以做模拟登录的httpClient,JSOUP,htmlUnit,我做过用Jsoup做模拟登录,要做两次模拟,第一次是获得Cookie,第二次带入cookie就行了,大致思想就是这样. 解决方案二: 这种程序没有意义,因为网页是不断变化的,你应该用mapi从本地outlook获取,或者用pop协议从邮箱服务器

浏览器-安卓HttpClient+Jsoup+Httpwatch模拟登陆网站

问题描述 安卓HttpClient+Jsoup+Httpwatch模拟登陆网站 打算让用户在android客户端输入登陆名及密码,然后客户端像浏览器那样,实现用户的登陆.目标登陆网站不提供额外的接口. 实现过程中发现提交的表单的有些参数在网页中是自动生成的,造成登入不进去网站,求高手赐教 解决方案 那就要模拟网页是怎么生成的啊,一般来说应该是 用ecode编码了下吧, 解决方案二: 安卓HttpClient+Jsoup+Httpwatch模拟登陆正方教务获取信息httpclient 模拟登陆HT