java获取教务系统成绩,Java httpClient 正方教务管理系统模拟登陆,爬取学生成绩和培养计划...

噜噜噜,附上代码~~~

不过说句老实话,ACM是真的比写这个有意思多了,吸吸吸~~

package jwgl;

import java.io.IOException;

import website.login;

public class Main {

public static void main(String[] args){

try {

login.login_jwgl();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}

package website;

import java.io.IOException;

import java.util.ArrayList;

import java.util.List;

import java.util.Scanner;

//import org.apache.http.HttpHost;

import org.apache.http.HttpResponse;

import org.apache.http.client.ClientProtocolException;

import org.apache.http.client.config.RequestConfig;

import org.apache.http.client.entity.UrlEncodedFormEntity;

import org.apache.http.client.methods.HttpPost;

import org.apache.http.impl.client.CloseableHttpClient;

import org.apache.http.impl.client.HttpClientBuilder;

import org.apache.http.impl.client.HttpClients;

import org.apache.http.impl.client.LaxRedirectStrategy;

import org.apache.http.message.BasicNameValuePair;

import org.apache.http.util.EntityUtils;

import constval.pageval;

public class login {

//static HttpHost proxy = new HttpHost("127.0.0.1",8080);

static RequestConfig requestConfig = RequestConfig.custom()

//.setProxy(proxy)

.setConnectTimeout(10000) // 设置连接超时时间

.setConnectionRequestTimeout(100000) // 设置请求超时时间

.setSocketTimeout(100000).setRedirectsEnabled(true)// 默认允许自动重定向

.build();

public static void login_jwgl() throws ClientProtocolException, IOException {

HttpClientBuilder builder = HttpClients.custom().disableAutomaticRetries() // 关闭自动处理重定向

.setRedirectStrategy(new LaxRedirectStrategy());// 利用LaxRedirectStrategy处理POST重定向问题

CloseableHttpClient httpClient = builder.setDefaultRequestConfig(requestConfig).build();

String state=pageval.get_page();

HttpPost httpPost = new HttpPost(pageval.login_page+state+"/default2.aspx");

System.err.println("RemoteHost :"+pageval.login_page+state+"/default2.aspx");

Scanner scanner=new Scanner(System.in);

System.out.println("请输入学号 :");

String Sno=scanner.nextLine();

System.out.println("请输入密码 :");

String password=scanner.nextLine();

Listlist = new ArrayList();

list.add(new BasicNameValuePair("__VIEWSTATE", "dDwtMTg3MTM5OTI5MTs7PqzAMxEcbTO1Y3iF3fZH/MWfvpUe"));

list.add(new BasicNameValuePair("TextBox1", Sno));

list.add(new BasicNameValuePair("TextBox2", password));

list.add(new BasicNameValuePair("RadioButtonList1", "%D1%A7%C9%FA"));

list.add(new BasicNameValuePair("Button1", ""));

list.add(new BasicNameValuePair("lbLanguage", ""));

try{

UrlEncodedFormEntity entity = new UrlEncodedFormEntity(list,"gb2312");

httpPost.setEntity(entity);

HttpResponse httpResponse=httpClient.execute(httpPost);

if(httpResponse.getStatusLine().getStatusCode()==200){

String webCode= EntityUtils.toString(httpResponse.getEntity());

String Sname=pageval.get_Sname(webCode, Sno);

String stoken=pageval.get_stoken(webCode);

System.out.println("Welcome "+Sname+" ~~~");

pageval.printClasses(httpClient,state,Sno,Sname,stoken);

System.err.println("----------------------------------------------------->");

pageval.printStudySchedule(httpClient, state, Sno, Sname, stoken);

httpPost.abort();

}

} catch (ClientProtocolException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}finally{

if(httpClient!=null){

try {

httpClient.close();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

scanner.close();

}

}

}

package constval;

import java.util.List;

import java.io.IOException;

import java.io.UnsupportedEncodingException;

import java.util.ArrayList;

import org.apache.http.Header;

import org.apache.http.HttpResponse;

import org.apache.http.client.ClientProtocolException;

import org.apache.http.client.HttpClient;

import org.apache.http.client.config.RequestConfig;

import org.apache.http.client.entity.UrlEncodedFormEntity;

import org.apache.http.client.methods.HttpGet;

import org.apache.http.client.methods.HttpPost;

import org.apache.http.impl.client.HttpClients;

import org.apache.http.message.BasicNameValuePair;

import org.apache.http.util.EntityUtils;

import util.DP;

public class pageval {

private static RequestConfig requestConfig=RequestConfig.custom()

.setRedirectsEnabled(false)

.build();

public static String login_page="http://202.197.120.57";

public static String get_page() throws ClientProtocolException, IOException {

HttpClient httpClient=HttpClients.createDefault();

HttpGet httpGet=new HttpGet(login_page);

httpGet.setConfig(requestConfig);

HttpResponse httpResponse=httpClient.execute(httpGet);

String host="";

if(httpResponse.getStatusLine().getStatusCode()==302){

Header[] header=httpResponse.getAllHeaders();

for(int i=0;i"+Sno;

String to="同学";

int idx1=webCode.indexOf(from)+30;

int idx2=webCode.indexOf(to);

return webCode.substring(idx1,idx2);

}

public static String get_stoken(String webCode){

String from="&gnmkdm=";

int idx=webCode.indexOf(from);

return webCode.substring(idx+8,idx+15);

}

public static String get_viewstate1(String webCode){

int idx1=webCode.indexOf("value=\"")+7;

int idx2=webCode.indexOf("

")-11;

return webCode.substring(idx1, idx2);

}

public static String get_viewstate2(String webCode){

int idx1=webCode.indexOf("__VIEWSTATE\" value=\"")+20;

int idx2=webCode.indexOf("

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值