唉 mop又没打卡,前面十几天全没啦,像我们这些IT码农虽然天天上网,但是总是忘记打卡,这不一失足生成千古恨,失败了撒。好不容易每次打卡都能得几百份的,唉。
​1. [代码][Java]代码   
package com.mop.core;
import java.io.IOException;
import java.net.URISyntaxException;
import java.util.HashMap;
import java.util.Map;
 
import org.apache.http.HttpException;
import org.apache.http.client.HttpClient;
import org.apache.http.impl.client.DefaultHttpClient;
 
import com.mop.util.HttpUtil;
 
/**
 * 猫扑打卡小应用
 *
 * @author jeson.sha
 * @website www.ij2ee.com
 */
public class Mop {
    private static final String LOGIN_URL = "http://passport.mop.com/Login?url=http://www.mop.com&charset=utf-8";
    private static final String USER_INFO = "http://passport.mop.com/common/user-info?callback=jsonp1338724243937";
    private static final String PUNCH = "http://passport.mop.com/punch-the-clock/punch?callback=jsonp1338724243939";
    private static final String CHARSET="utf-8";
    /**
     * @param args
     * @throws InterruptedException
     * @throws HttpException
     * @throws IOException
     * @throws URISyntaxException
     * @throws IllegalStateException
     */
    public static void main(String[] args) throws IllegalStateException, URISyntaxException, IOException, HttpException, InterruptedException {
        HttpClient client = new  DefaultHttpClient();
        String userName = "猫家三少";
        Mop mop = new Mop();
        mop.login(client,userName,"111111");
        boolean isLogin = mop.getIsCanGetUserInfo(client,userName);
        if(!isLogin){http://www.huiyi8.com/bgm/​
            System.out.println("登录失败");
        }
        if(mop.punch(client)){
            System.out.println("打卡成功");
        }else{背景音乐
            System.out.println("打卡失败");
        }
    }
 
    /**
     * 打卡积分
     *   成功会返回 jsonp1338724243939({"mpPlused":20,"status":200}) 分数 和状态
     *   失败则返回 jsonp1338724243939({"status":404})
     *   区别就是 有没 mpPlused json属性
     * @param client
     * @return 是否打卡成功
     * @throws IllegalStateException
     * @throws URISyntaxException
     * @throws IOException
     * @throws HttpException
     * @throws InterruptedException
     */
    private  boolean punch(HttpClient client) throws IllegalStateException, URISyntaxException, IOException, HttpException, InterruptedException {
        String punchRes = HttpUtil.doGet(client, PUNCH, CHARSET);
        return punchRes.indexOf("mpPlused")!=-1;
    }
 
    /**
     * 可否获取用户信息
     *   成功JSON则会出现登录名 所以这里就用是否存在用户名判断
     * @param client
     * @param userName
     * @return
     * @throws IllegalStateException
     * @throws URISyntaxException
     * @throws IOException
     * @throws HttpException
     * @throws InterruptedException
     */
    private boolean getIsCanGetUserInfo(HttpClient client,String userName) throws IllegalStateException, URISyntaxException, IOException, HttpException, InterruptedException {
        boolean isCanGetUserInfo = false;
        String res = HttpUtil.doGet(client, USER_INFO, CHARSET);
        isCanGetUserInfo = res.indexOf(userName)!=-1;
        return isCanGetUserInfo;
    }
 
    /**
     * 登录
     *    没有header 或header有误 则会导致登录失败
     * @param client
     * @param userName
     * @param password
     * @throws IllegalStateException
     * @throws URISyntaxException
     * @throws IOException
     * @throws HttpException
     * @throws InterruptedException
     */
    private void login(HttpClient client,String userName,String password) throws IllegalStateException, URISyntaxException, IOException, HttpException, InterruptedException{
        Map<String, String> param = new HashMap<String, String>();
        param.put("user_name", userName);
        param.put("password", password);
 
        Map<String, String> loginHeader = new HashMap<String, String>();
        loginHeader.put("Content-Type","application/x-www-form-urlencoded");
        loginHeader.put("User-Agent","Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; QQWubi 133; CIBA; .NET CLR 2.0.50727)");
        loginHeader.put("Host","passport.mop.com");
        loginHeader.put("Referer","http://www.mop.com/");
        loginHeader.put("Cookie","mopst_ssid=13387192652653136; mopst_ssid_time=1338719327796; base_domain_629695a417eb49ada2a6bc2f67b3f7ef=mop.com; mopst_unique=13387192636401978; mop_locale=0086320500; maxfxbidw2010=935; xnsetting_629695a417eb49ada2a6bc2f67b3f7ef=%7B%22connectState%22%3A2%2C%22oneLineStorySetting%22%3A3%2C%22shortStorySetting%22%3A3%2C%22shareAuth%22%3Anull%7D");
        String postRes = HttpUtil.doPost(client, LOGIN_URL, param, loginHeader,CHARSET);
        System.out.println(postRes);
    }
 
}

转载于:https://www.cnblogs.com/xkzy/p/3916519.html

Java 猫扑(mop)打卡小应用相关推荐

  1. 一个女孩的就业之路 ------来自猫扑(mop.com)

    我觉得,这是有史以来我在校内上面看到的最有价值的东西.真的是不枉费这一点时间看完它.太真实了. 下面就是那个同济毕业的女生写的东西: 我是2005年毕业的,偶尔来这里看看,不常灌水. 今天来随意写下一 ...

  2. java校园疫情上报打卡小程序源码(毕设)

    开发环境及工具: 大等于jdk1.8,大于mysql5.5,idea(eclipse),微信开发者工具 技术说明: springboot mybatis 微信小程序 代码注释齐全,没有多余代码,适合学 ...

  3. 一个女孩的就业之路(同济大学BBS上两年不沉的帖子) 转自猫扑

    我觉得,这是有史以来我在校内上面看到的最有价值的东西.真的是不枉费这一点时间看完它.太真实了. 下面就是那个同济毕业的女生写的东西: 我是2005年毕业的,偶尔来这里看看,不常灌水. 今天来随意写下一 ...

  4. 签到java小程序代码_微信小程序全栈项目:签到打卡小程序 + 后端实现

    [实例简介] 签到打卡小程序 + 后端实现 : 后端是 springmvc + mybatis + mysql实现 [实例截图] [核心代码] Calendar `-- Calendar |-- Ca ...

  5. 微信小程序 java疫情个人防疫打卡监控系统python

    将系统权限按管理员和用户这两类涉及用户划分. (a) 管理员:管理员使用本系统涉到的功能主要有:个人中心.用户管理.个人打卡管理.防疫打卡管理.消息提醒管理.系统管理等功能 (b)用户进入系统前台可以 ...

  6. java面试app_Java面试训练app下载-Java面试题训练下载 v2.3 安卓版-IT猫扑网

    java面试训练是一款专为面试Java程序开发的朋友们准备的手机应用.通过该应用,你在手机上就可以快速准确的了解与Java面试有关的题目和答案,为日后的应聘做好完全的准备,有需要的朋友可以来IT猫扑下 ...

  7. java连接sqlserver2008_java连接sqlserver2008驱动包下载完整版_ IT猫扑网

    java连接sqlserver2008驱动包,连接时一直提示驱动不匹配,查了java连接相关问题才知道需要一个驱动包,找了下,果断有用啊~~分享给大家~有需要的朋友就来IT猫扑下载吧! 驱动包内容 m ...

  8. 算法--猫扑素数--java版

    算法–猫扑素数–java版 简介 猫扑素数: 形如以 2 开头, 之后跟任意多个 3 的十进制整数如果是个素数, 则它是猫扑素数. 如 2, 23, 233, 2333, 23333 都是猫扑素数, ...

  9. 华为等上榜全球100大最具影响力企业;猫扑关闭发帖功能;亚马逊要给逾50万名员工加薪 |极客头条...

    「极客头条」-- 技术人员的新闻圈! CSDN 的读者朋友们早上好哇,「极客头条」来啦,快来看今天都有哪些值得我们技术人关注的重要新闻吧. 整理 | 梦依丹 出品 | CSDN(ID:CSDNnews ...

最新文章

  1. ASP.NET MVC 中将FormCollection与实体间转换方法
  2. python【力扣LeetCode算法题库】9- 回文数
  3. 【POJ1456】Supermarket
  4. 一文了解Kubernetes的前世今生
  5. tf.reshape 和 tf.transpose 用法
  6. web前端技术分享:es6展开运算符概念和使用!
  7. 【mysql】配置 选项文件
  8. 音视频技术开发周刊 72期
  9. XPE下关闭自动播放功能的方法
  10. Spring Cloud 终于按捺不住推出了自己的服务网关 Gateway
  11. 数据转换之 Number
  12. 得推乡镇拼车系统源码v1.0
  13. Xamarin Android 应用程序内图标上数字提示
  14. ftok函数(file to key)
  15. 史上最详细的F450四轴装机实例(无名官方推荐的)
  16. 如何传输本地文件到服务器,本地传输文件到服务器
  17. 解决“Macbook外接显示器后键盘音量键无法使用以及Numlock失效”的问题
  18. ubuntu开机密码破解
  19. 红米机器人倒地_红米出现一个小人维修android机器人
  20. 前端开发:JS中join()方法的使用总结

热门文章

  1. Redis数据结构为字典Hash 的 存储、获取、删除等的操作
  2. 从硬盘安装Linux操作系统的方法步骤
  3. 有效 QA 过程测量的 10 个基本指标
  4. 已经变了….谈谈对现在大环境的一些想法与思考
  5. 世界编程语言排行榜08年02月
  6. Formidable 项目开发人员驳斥:MITRE 发的这个CVE漏洞纯属“碰瓷”
  7. 很细的项目部署上线流程(一)服务器搭建环境从0开始,Linux安装JDK安装nginx部署ssl证书安装git安装node安装pm2安装maven
  8. 性能: 网上常说性能测试是什么
  9. 【IoT】创业:如何找到可以主导的创业市场?
  10. 命令:xcrun、xcodebuild