学信网的登录有验证码,是那种计算数字或者汉字识别的,很难识别。最近连学籍信息和学历信息也换成图片了,常规的正则 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. C#中[] 、List、Array、ArrayList等数据结构的差异简述

    [] 是针对特定类型.固定长度的. List 是针对特定类型.任意长度的. Array 是针对任意类型.固定长度的. ArrayList 是针对任意类型.任意长度的. Array 和 ArrayLis ...

  2. hadoop脑裂

    今天修改了和journalNode通信的zookeeper配置,原来没有打开zookeeper动态清理快照的功能. 所以3台zookeeper节点,每台修改完配置后,然后重启了下zookeeper服务 ...

  3. [转]Nginx的负载均衡方式

    如果Nginx没有仅仅只能代理一台服务器的话,那它也不可能像今天这么火,Nginx可以配置代理多台服务器,当一台服务器宕机之后,仍能保持系统可用.具体配置过程如下: 1. 在http节点下,添加ups ...

  4. Memcache/Memcached的PHP操作手册(纯手稿版)

    Memcache和Memcached 其实是一个东西,只是php中要是用的扩展不一样, 2009年左右有人丰富memcache的用法和性能,编写了一个libmemcached是独立第三方client ...

  5. R语言合并data.frame

    Merging Data Adding Columns To merge two data frames (datasets) horizontally,  use the merge functio ...

  6. CSS2.0中最常用的18条技巧

    一.使用css缩写 使用缩写可以帮助减少你CSS文件的大小,更加容易阅读.  具体内容请浏览:CSS常用缩写语法 二.明确定义单位,除非值为0. 忘记定义尺寸的单位是CSS新手普遍的错误.在HTML中 ...

  7. missing gradle project information

    需要在android studio 中配置gradle的代理,当然是用goagent了.打开setting->gradle->Gradle VM Options:-Dhttp.proxyH ...

  8. VMWare链接克隆 和 完整克隆

    VMware Workstation 是使用最为广泛的虚拟机软件,用软件的方式模拟硬件环境.用户可以借助VMware Workstation的模拟出来的硬件,在当前的操作系统上安装N多个虚拟的操作系统 ...

  9. python 搜索引擎Whoosh中文文档和代码 以及jieba的使用

    注意, 数据库的表最好别有下划线 中文文档链接: https://mr-zhao.gitbooks.io/whoosh/content/%E5%A6%82%E4%BD%95%E7%B4%A2%E5%B ...

  10. 【转】【Nginx】Nginx 入门教程 + 常用配置解析

    == Nginx介绍和安装 == Nginx是一个自由.开源.高性能及轻量级的HTTP服务器及反转代理服务器, 其性能与IMAP/POP3代理服务器相当.Nginx以其高性能.稳定.功能丰富.配置简单 ...