html-关于用http client模拟登录教务系统的问题 跪求大神指点!

问题描述

关于用http client模拟登录教务系统的问题 跪求大神指点!

response = httpclient.execute(httppost,context);
String result = response.getStatusLine().toString();
System.out.println(result);
HttpEntity entity1 = response.getEntity();
System.out.println(EntityUtils.toString(entity1));
Header locationHeader =response.getFirstHeader("location");

System.out.println(locationHeader.toString());

             String newuri = "http://jwxt1.cumt.edu.cn"+locationHeader.getValue(); 

         System.out.println(result);
            HttpGet redirect=new HttpGet(newuri);  

            CloseableHttpResponse response1=httpclient.execute(redirect,context);
            HttpEntity entity = response1.getEntity();
              System.out.println(EntityUtils.toString(entity)); 

            redirect.releaseConnection();

返回的结果```
HTTP/1.1 302 Moved Temporarily

Object moved

Object moved to here.

Location: /xs_main.aspx?xh=我的学号

用httpclient模拟登陆学校的方正教务系统 post数据以后再获取重定向的地址进行get访问 为何不行


解决方案

你应该没有带上登录的cookie的,虽然模拟过登录了,但是第二次请求的时候没有将cookie一起添加到请求当中。

思路:

 1、模拟登录,获取登录后的cookie.
 2、带着得到的cookie请求需要的操作。

给你个Jsoup的例子,比较简单:

     package com.daidai.util;

    import java.io.IOException;
    import java.util.HashMap;
    import java.util.HashSet;
    import java.util.Map;
    import java.util.Set;
    import java.util.regex.Matcher;
    import java.util.regex.Pattern;

    import org.jsoup.Connection.Method;
    import org.jsoup.Connection.Response;
    import org.jsoup.Jsoup;
    import org.jsoup.nodes.Document;
    import org.jsoup.nodes.Element;
    import org.jsoup.select.Elements;

    public class JsoupUtil {

    // 登录获取到的cookie
    static Map<String, String> cookieMap = new HashMap<String, String>();

    /**
     * @param uri
     * @param paramsMap form表单中的参数和值
     * @return
     */
    public static boolean login(String uri, Map<String, String> paramsMap){

        boolean loginFlag = false;

        Response response = null;
        try {
            response = Jsoup.connect(uri)
                    .userAgent("Mozilla")
                    .data(paramsMap)
                    .method(Method.POST)
                    .timeout(20000)
                    .execute();

            if (response.statusCode() == 200) {
                cookieMap = response.cookies();
                loginFlag = true;
            } 

        } catch (IOException e) {
            e.printStackTrace();
        }

        return loginFlag;
    }

    /**
     * 提交评论内容
     * @param url
     * @param params    封装的参数
     */
    public static void doPost(String uri, Map<String,String> paramsMap){

        Response response = null;
        try {
            response = Jsoup.connect(uri)
                    .userAgent("Mozilla/5.0")
                    .data(paramsMap)
                    .method(Method.POST)
                    .timeout(20000)
                    .cookies(cookieMap)
                    .ignoreContentType(true)
                    .execute();

            if (response.statusCode() == 200) {
                System.out.println("评论成功!");
            } else{
                System.out.println("评论失败!(HTTP CODE:"+response.statusCode()+")");
            }

        } catch (IOException e) {
            e.printStackTrace();
        }

    }

    }

登录操作:

     System.out.println("正在进行登录......");

        Map<String, String> paramsMap = JsoupUtil.getParamsMap();
        paramsMap.put("username", userName);
        paramsMap.put("password", password);

        boolean flag = JsoupUtil.login("**********", paramsMap);

        if(flag){
            System.out.println("登录成功!");
        }else{
            System.out.println("登录失败请重新进行登录!");
            login();
        }

解决方案二:

可以试着用OKhttp试一下

解决方案三:

重定向后再访问返回什么错误信息 是不是参数 URL不对

解决方案四:

重定向后再访问返回什么错误信息?还有第一次的cookie最好带带上,另外可以抓包分析

时间: 2024-09-21 01:00:46

html-关于用http client模拟登录教务系统的问题 跪求大神指点!的相关文章

数据库-小白问个服务器方面的小问题--就是登录慢,跪求大神解决!

问题描述 小白问个服务器方面的小问题--就是登录慢,跪求大神解决! 访问web站点的时候,特别慢,大概10分钟才会有反应,通过测试数据库连接是没问题的.日志如下:[Wed Nov 04 15:28:26.473310 2015] [mpm_prefork:notice] [pid 1888] AH00163: Apache/2.4.2 (Unix) PHP/5.5.7 configured -- resuming normal operations[Wed Nov 04 15:28:26.473

多线程-跪求大神,编写算法实现并发进程的模拟

问题描述 跪求大神,编写算法实现并发进程的模拟 一.实验目的 1. 了解进程的原因执行顺序,以及并发进程的运行次序 2. 进一步深刻理解操作系统在多进程(线程)执行中的作用 二.实验内容 1. 实现并发进程的程序模拟 2. 可以多线程编程代替并发进程 三.实验要求 1. 实现多进程(线程)程序编码,程序须要体现出多线程的并发执行的特征:运行结果无序.不可重现 2. 在上述基础上,考虑为多线程设置同步机制,程序须要体现出同步多线程的特点,即运行结果的可再现性 四.实验提示 1. 多线程运算结果的不

C#模拟登陆网易博客,求大神指点,最好能给出源代码~大神来帮帮忙

问题描述 想做一个C#模拟登陆网易博客,目前已经抓取到了网易博客的的Cookie,但是下一步我不知道该请求到哪个页面,需要的参数是什么.希望以前做过模拟登陆的大神给指点.如果做过模拟网易博客登录的大神,能给源代码最好了.小弟在线等,谢谢!或者发我网易邮箱:FHM_0831@163.com 解决方案 解决方案二:请求哪个你直接用个抓包工具就知道了,参数也能在抓包工具看到解决方案三:直接看提交包不就行了自己构造参数上去解决方案四:有链接,但是我不知道是不是,而且链接是next.jsp后面跟的是登录名

桌面池创建虚拟机登录问题,非常急,求大神解答

问题描述 通过创建AutomatedPool模式的桌面池,桌面池成功添加,并添加虚拟机如下图:但是去登陆的时候报错,错误是:此桌面当前不可用.请稍后尝试重新连接,或者联系您的系统管理员.这是什么原因?模版用的是Windows732位的系统我还创建了一个模版是xp32位的桌面池,创建成功后,清单列表的虚拟机状态都是可用的,但是登录虚拟机的时候,用户能登录上去,但是是黑屏无鼠标,等了一会儿就断开连接了,这个又是什么原因?求大神能帮我解答这两个问题. 解决方案 本帖最后由 druid_wfm 于 20

新浪微博第三方登录求大神指点

问题描述 有大神对能指点一下吗<%--新浪登录--%><scriptsrc="http://tjs.sjs.sinajs.cn/open/api/js/wb.js?appkey=568898243"type="text/javascript"charset="utf-8"></script><scripttype="text/javascript">$("#wb_btn

MyEclipse整合SSH,做个登录,跪求大神

问题描述 小弟初学框架,求大神指点,求一个师傅可教小弟的 解决方案 解决方案二:只要把ssh的原理理解了,做个登陆又有何难?解决方案三:引用1楼sen_linzhiwang的回复: 只要把ssh的原理理解了,做个登陆又有何难? 刚接触啊不懂啊,请赐教解决方案四:先到网上找点东西,把Ssh搭起来,网上例子挺多解决方案五:引用2楼lqw19930407的回复: Quote: 引用1楼sen_linzhiwang的回复: 只要把ssh的原理理解了,做个登陆又有何难? 刚接触啊不懂啊,请赐教 先把ssh

java web 技术-求助!关于模拟登陆利用接收的cookie判断登录是否成功,遇到了问题,,求大神们相助!在下多谢!

问题描述 求助!关于模拟登陆利用接收的cookie判断登录是否成功,遇到了问题,,求大神们相助!在下多谢! 在下学生最近在做一个用java开发模拟登陆校内网的项目,可是学校使用struts2做的,url的尾缀是.action,登陆前和登陆后的url一致,无法用html来判断,,于是就想用cookie来判断登陆是否成功,可是面临一个问题就是请求标头的Cookie是JSESSIONID=3CDAB1BA4520BD1F53E62F9D5BCCCC49之类的,发送的jsessionid和接收的jses

求大神解决登录-求登录服务器,查看设备列表信息

问题描述 求登录服务器,查看设备列表信息 自己已经写了一部分但是有错误不全面,不知道怎么去改,求大神帮忙login.jsp <%@page contentType="text/html; charset=GBK"%> function validate(f){ if(!(/^w{5,15}$/.test(f.userid.value))){ alert("用户名必须是5~15位!") f.userid.focus(); return false; } i

java-登录前和登录成功的页面Url一样 怎么回事,求大神

问题描述 登录前和登录成功的页面Url一样 怎么回事,求大神 5C 为什么登录界面的Url是****/loginaction.action,登录成功后的页面也是****/loginaction.action?前后url一样,这样我模拟登陆怎么判断是否登录成功了呢 求详解 解决方案 那就是你的代码并没有跳转呀...要是登陆成功肯定要有跳转代码的呀 解决方案二: 看你跳转代码,当你点击登录按钮 跳转的是什么页面. 你可以传一个参数过去.当登录成功,把传的参数在成功页面显示 解决方案三: 判断登陆成功