学信网的登录有验证码,是那种计算数字或者汉字识别的,很难识别。最近连学籍信息和学历信息也换成图片了,常规的正则 css xpath都不能使。

下载图片,需要先登录,获取登陆后的cookie和学籍信息的图片url。这一步由webview获得,用户自行登录,不需要理会验证码。

使用okhttp。需要导入这两个包。

package com.touna.httprequest;

import java.io.File;
import java.io.FileOutputStream;
import java.util.concurrent.TimeUnit; import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response; public class HttpReq { //private OkHttpClient client = new OkHttpClient();
private final Request.Builder builder = new Request.Builder();
private final OkHttpClient client = new OkHttpClient.Builder()
.readTimeout(30, TimeUnit.SECONDS)
.connectTimeout(30, TimeUnit.SECONDS)
.writeTimeout(30, TimeUnit.SECONDS)
.build(); //设置各种超时时间 /**
@param isAddXuexinHeader 是否加入学信网header到请求头
*/
public HttpReq(boolean isAddXuexinHeader){
if (isAddXuexinHeader == true){
builder.addHeader("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8");
builder.addHeader("Accept-Encoding","gzip, deflate, sdch, br");
builder.addHeader("Accept-Language","zh-CN,zh;q=0.8");
builder.addHeader("Cache-Control","max-age=0");
builder.addHeader("Connection","keep-alive");
builder.addHeader("Host","my.chsi.com.cn");
builder.addHeader("If-Modified-Since","Tue, 13 Mar 2018 10:14:31 GMT");
builder.addHeader("Upgrade-Insecure-Requests","1");
builder.addHeader( "User-Agent","Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36");
}
} /**
@param cookie 加入cookie到请求头
*/
public void addCookieToHeader(String cookie){
builder.addHeader("cookie",cookie);
} /**
@param url get请求的url
*/
public String get(String url) {
builder.url(url);
final Request request = builder.build();
try (Response response = client.newCall(request).execute()) {
return response.body().string();
}catch (Exception e){
e.printStackTrace();
return "";
}
} /**
@param url 图片的地址
* */
public void savePicture(String url) {
builder.url(url);
final Request request = builder.build();
try (Response response = client.newCall(request).execute()) {
byte[] bt = response.body().bytes();
byte2image(bt, "./xueji.png");
}catch (Exception e){
e.printStackTrace();
}
} private void byte2image(byte[] data,String path){
try {
File file = new File(path);
FileOutputStream fos = new FileOutputStream(file);
fos.write(data, 0, data.length);
fos.flush();
fos.close();
System.out.println("保存图片成功。。");
} catch (Exception e) {
e.printStackTrace();
}
} public static void testBaidu(){
HttpReq baiduHttp = new HttpReq(false);
String respStr = baiduHttp.get("http://www.baidu.com");
System.out.println(respStr);
} public static void main(String[] args) {
// testBaidu();
HttpReq xuexinHttp = new HttpReq(true);
xuexinHttp.addCookieToHeader("JSESSIONID=06E39F1AE8D1EA9BFD8F34D"); //由webview执行js返回。
xuexinHttp.savePicture("https://my.chsi.com.cn/archive/gdjy/photo/show.action?pid=2367c5f88b78b088e484a51eb3"); //由webview执行js返回。
} 
}

java okhhtp下载学信网学籍信息的更多相关文章

  1. 模拟学信网登录,Cookie 序列化,在反序列化之后不能用的问题

    昨天和今天在模拟学信网登录,然后抓取用户的信息数据的时候发现一直登录不成功, 登录页面,https://account.chsi.com.cn/passport/login?service=http% ...

  2. 学信网改绑手机号码,但是忘记了老号码怎么办?利用node.js + puppeteer 跑脚本实现改绑手机号

    最近登录学信网发现自己学信网上绑定的手机号码不是目前自己使用的手机号码,于是想改绑手机号,但是发现不记得之前的手机号码了: 于是百度各种方法都无济于事:也不想重新注册账号,最后看见一篇文章通过Pyth ...

  3. java资源下载之官网地址

    [一].json下载地址 http://sourceforge.net/projects/json-lib/files/ [二].apache-commons下载地址 http://commons.a ...

  4. 爬虫下载校花网美女信息-lxml

    # coding=utf-8 # !/usr/bin/env python ''' author: dangxusheng desc : 下载校花网上的个人信息:名字-学校-图片地址-点赞数 date ...

  5. 使用JAVA爬取去哪儿网入住信息

    昨天帮一个商科同学爬取去哪儿网站的所有广州如家快捷酒店的所有入住信息. 就是上面的商务出行 xxx年入住这些东西 然而去哪儿的前端很强,在获取所有如家快捷酒店的时候就遇到了问题. 他显示的酒店列表是j ...

  6. 李洪强iOS开发之-环信02.2_环信官网下载环信 SDK

    李洪强iOS开发之-环信02.2_环信官网下载环信 SDK 移动客服即时通讯云 iOS SDK 当前版本:V3.1.4 2016-07-08 [ 版本历史 ] | 开发指南 | 知识库 | Demo源 ...

  7. java各历史版本官网下载

    java各历史版本官网下载: http://www.oracle.com/technetwork/java/javase/archive-139210.html

  8. JAVA的下载与安装和环境变量配置等详细教程

    初学JAVA时,新手常常不知如何下载JAVA,也不知如何安装JAVA以及对JAVA配置环境变量.近期学弟学妹常请教我如何下载安装和配置JAVA,于是写下此博文以便更多新手快速入门,由于我本人是玩智能车 ...

  9. java课堂测试样卷-----简易学籍管理系统

    程序设计思路:分别建立两个类:ScoreInformation类(用来定义学生的基本信息以及设置set和get函数)ScoreManagement类(用来定义实现学生考试成绩录入,考试成绩修改,绩点计 ...

随机推荐

  1. me909e-821 拨号流程

    第一次: at+cereg=1                                                                      OK              ...

  2. ansible普通用户su切换

    [root@361way.com ~]# cat /etc/ansible/hosts [test01] 10.212.52.14 ansible_ssh_user=test ansible_ssh_ ...

  3. IEnumerable<T> 转换为数组

    IEnumerable<User> userlist=xxxx; string[] ids=userlist.select(u=>u.id).toArray();

  4. Hbase 学习(九) 华为二级索引(原理)

    这个是华为的二级索引方案,已经开放源代码了,下面是网上的一篇讲解原理的帖子,发出来和大家共享一下. 经过本人认真阅读了一下代码,发现这个源码仅供参考,想要集成到原有的集群当中是有点儿难度的,它对hba ...

  5. 使用FineReport打造考试分析系统

    本系统的优点: 1.报表内容丰富:系统中包含总分分析.小分分析.作答错因分析.试卷命题分析和各类用户报告单五类报表.涵盖学校须要的各项分析数据,并提供丰富的图表,使分析数据更直观表现. 2.操作灵活简 ...

  6. UI设计, 弹出对话框 设计(区分强调按钮和普通按钮,给用户一个 正向建议的强调按钮)

    在UI设计时,经常会需要 设计 弹出对话框,以下是个样式设计: 0.标准对话框 说明 Title space : 标题区 contents space : 内容区 function space: 功能 ...

  7. Redis 学习笔记2

    数据类型: string 字符串类型      一个键最多存储512MB     1> SET :设置key对应的value,如果key存在,同名会产生覆盖         SET key va ...

  8. JAXB解析xml

    废话不多说,直接上代码 核心类: package com.jaxb; import java.io.File; import java.io.FileInputStream; import java. ...

  9. 【Python】Centos + gunicorn+flask 报错ImportError: No module named request

    今天用Python去下载图片,用到了 urllib.request,这个是python3的方法.python2 使用的是urllib2 遇到了这么个问题后台报错,ImportError: No mod ...

  10. javaweb-Excel导入导出后台代码

    前言: 导入导出后台java代码写好很久了,但是...但是...前台不会写啊. 先把后台代码帖上吧 1.excelToDb package util; /** * 代码解释:此方法将传入一个URL,即 ...