唉 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);
    }
 
}

Java 猫扑(mop)打卡小应用的更多相关文章

  1. Centos 上使用mmsh协议听猫扑网络电台 VLC播放器

    Centos 上使用mmsh协议听猫扑网络电台 VLC播放器 安装CentOS已经有一段时间了,但是由于在Linux下除了学习,其他是事情都干不了.今天想闲来无事开了CentOS就想听一下歌,突然想起 ...

  2. Java学习过程中的总结的小知识点(长期更新)

    Java学习过程中的总结的小知识点 (主要是自己不会的知识和容易搞错的东西) 计算某个程序运行的时间 long stime=System.currentTimeMillis(); copy3(file ...

  3. Java内存管理的9个小技巧

    Java内存管理的9个小技巧很多人都说“Java完了,只等着衰亡吧!”,为什么呢?最简单的的例子就是Java做的系统时非常占内存!一听到这样的话,一定会有不少人站出来为Java辩护,并举出一堆的性能测 ...

  4. Java 课程设计 "Give it up"小游戏(团队)

    JAVA课程设计 "永不言弃"小游戏(From :Niverse) 通过Swing技术创建游戏的登陆注册界面,使用mySQL数据库技术完成用户的各项信息保存和游戏完成后的成绩保存. ...

  5. 《java入门第一季》之类小案例(模拟用户登录)

    首先是做一个用户登录的小案例.在此基础上加入其它逻辑. import java.util.Scanner; /* * 模拟登录,给三次机会,并提示还有几次.如果登录成功,就可以玩猜数字小游戏了. * ...

  6. 前端,Java,产品经理,微信小程序,Python等资源合集大放送

    为了感恩大家长久以来的关注和支持,小编准备了一些福利,整理了包含前端,Java,产品经理,微信小程序,Python,网站源码,Android应用视频教程,微信公众平台开发教程及材料等资源合集大放送. ...

  7. Java生鲜电商平台-APP/小程序接口传输常见的加密算法及详解

    Java生鲜电商平台-APP/小程序接口传输常见的加密算法及详解 说明:Java生鲜电商平台-APP/小程序接口传输常见的加密算法及详解,加密算法,是现在每个软件项目里必须用到的内容. 广泛应用在包括 ...

  8. hdu 4540 威威猫系列故事——打地鼠 dp小水题

    威威猫系列故事——打地鼠 Time Limit: 300/100 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others) Total ...

  9. java 性能优化:35 个小细节,让你提升 java 代码的运行效率

    前言 代码 优化 ,一个很重要的课题.可能有些人觉得没用,一些细小的地方有什么好修改的,改与不改对于代码的运行效率有什么影响呢?这个问题我是这么考虑的,就像大海里面的鲸鱼一样,它吃一条小虾米有用吗?没 ...

随机推荐

  1. 理解 virbr0

    virbr0 是 KVM 默认创建的一个 Bridge,其作用是为连接其上的虚机网卡提供 NAT 访问外网的功能. virbr0 默认分配了一个IP 192.168.122.1,并为连接其上的其他虚拟 ...

  2. 巴蜀1088 Antiprime数

    Description 如果一个自然数n(n>=1),满足所有小于n的自然数(>=1)的约数个数都小于n的约数个数,则n是一个Antiprime数.譬如:1, 2, 4, 6, 12, 2 ...

  3. 使用plantuml生成uml图

    主要包括以下三步: 一.到http://plantuml.com/download 下载plantuml.jar ,我将这个软件放置到home的/home/munication/WORKM/Progr ...

  4. AFNetworking实时监测网络连接

    
// 网络变化消息 [[NSNotificationCenter defaultCenter] addObserver: self selector: @selector(checkNetwork) ...

  5. 小窥React360——用React创建360全景VR体验

    前言    混迹VR届的发烧友兼开发者们一定不要错过这款FaceBook推出的跨端VR开发框架——React360,称为360全景体验框架更为准确,因为其前身是FaceBook和Oculus2017年 ...

  6. codevs——1958 刺激

    1958 刺激  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 黄金 Gold 题解       题目描述 Description saffah的一个朋友S酷爱滑雪,并且追求刺 ...

  7. 计算机操作系统处理机调度读后感—–关于进程概念的剖析。从RING3到RING0(32位操作系统)

    计算机操作系统处理机调度读后感: 笔者在看操作系统西安电子科技大学那本书的时候,初次感觉本科教的不会太难,所以没有认真的看,但是随后这本书讲的刷新了我的世界观.这本书居然是ring0级别的,这时不禁吐 ...

  8. java jvm学习

    在并发编程中,多个线程之间采取什么机制进行通信(信息交换),什么机制进行数据的同步? 在Java语言中,采用的是共享内存模型来实现多线程之间的信息交换和数据同步的. 线程之间通过共享程序公共的状态,通 ...

  9. Elasticsearch shield权限管理详解

    Elasticsearch shield权限管理详解 学习了:https://blog.csdn.net/napoay/article/details/52201558 现在(20180424)改名为 ...

  10. [cocos2d-x]怎样降低cocos2d-x游戏的耗电量?

    Cocos2d-x游戏的耗电量一直是个让人头疼的问题,一个简单的三消游戏,玩一会手机就热得发烫,更郁闷的是电池消耗非常快.基本上两个小时就能够把电池耗光. 近期又看到一个帖子.有个老外用cocos2d ...