這期內(nèi)容當(dāng)中小編將會(huì)給大家?guī)碛嘘P(guān)如何實(shí)現(xiàn)一個(gè)屬于自己的查成績app,文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
創(chuàng)新互聯(lián)專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于做網(wǎng)站、成都做網(wǎng)站、寧城網(wǎng)絡(luò)推廣、小程序開發(fā)、寧城網(wǎng)絡(luò)營銷、寧城企業(yè)策劃、寧城品牌公關(guān)、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運(yùn)營等,從售前售中售后,我們都將竭誠為您服務(wù),您的肯定,是我們最大的嘉獎(jiǎng);創(chuàng)新互聯(lián)為所有大學(xué)生創(chuàng)業(yè)者提供寧城建站搭建服務(wù),24小時(shí)服務(wù)熱線:028-86922220,官方網(wǎng)址:www.rwnh.cn
一、準(zhǔn)備工作
準(zhǔn)備工具:電腦
軟件:Fiddler 4(哪個(gè)都行,只要抓包)
打開我們學(xué)校的教務(wù)網(wǎng)站http://202.192.240.29/login!welcome.action
點(diǎn)擊驗(yàn)證碼框,會(huì)向服務(wù)器發(fā)送get請求,這是我抓到的請求內(nèi)容
服務(wù)器返回的是一個(gè)驗(yàn)證碼
當(dāng)我輸入驗(yàn)證碼,然后點(diǎn)擊登錄,這是我抓到的包
這里可以看到請求的內(nèi)容是account=311500xxxx&pwd=xxxxxx&verifycode=84ga
這里不用多講吧,account是學(xué)號(hào),pwd當(dāng)然是password啦,verifycode肯定是驗(yàn)證碼啦。
當(dāng)我們登錄成功,服務(wù)器回返回一個(gè)json數(shù)據(jù),成功的code是0,message是“登錄成功”,如果錯(cuò)誤的話,code是-1,message會(huì)提示你錯(cuò)誤的方式。
然后我們點(diǎn)擊成績查詢。
這是我抓到的數(shù)據(jù),這里服務(wù)器同樣返回的是json數(shù)據(jù),這很有利于我們的解析。
到這里,我們的前期準(zhǔn)備工作已經(jīng)完成,下一步,干嘛呢?
二、主要思路
這里我開始介紹,我的主要思路。當(dāng)然這里需要你對http協(xié)議有那么一點(diǎn)的認(rèn)識(shí),強(qiáng)烈推薦一本快速入門的書《圖解http》。
我們可以看到,我每次發(fā)送post請求或者get請求時(shí)都會(huì)有這么一個(gè)東西Cookie:JSESSIONID=BCA9EDDA29865D38E7D7344D975D78A6,這是啥東西呢?因?yàn)閔ttp協(xié)議是無狀態(tài)的,那么我們要怎么確認(rèn)當(dāng)前用戶就是剛剛登陸的用戶呢?所以這里就有了JSESSIONID,要是不明白,請百度(JSESSIONID),然后你看看應(yīng)該就會(huì)明白了,這里假設(shè)你已經(jīng)明白了。
這個(gè)JSESSIONID是當(dāng)我們第一次打開教務(wù)網(wǎng)站的時(shí)候,服務(wù)器給我們分配的。有圖有真相,看圖。
這里的Set-Cookie: JSESSIONID=428F8358B38BB1C1B9B344E5D1D79DA2;Path=/; HttpOnly,我們主要關(guān)心這個(gè)JSESSIONID=428F8358B38BB1C1B9B344E5D1D79DA2(這里為啥跟上面不一樣呢,因?yàn)槲抑匦麓蜷_了瀏覽器,系統(tǒng)又重新給我分配的),這里的set-cookie就給我們設(shè)置了JSESSIONID,這里就是我們當(dāng)前登錄的唯一標(biāo)識(shí),所以我們每次發(fā)送請求的時(shí)候都要帶上它。
三、具體實(shí)現(xiàn)(Java實(shí)現(xiàn))
class myVerifyThread extends Thread{
@Override
public void run() {
try {
HttpClient httpClient = newDefaultHttpClient();
HttpGet httpGet = new HttpGet(“http://202.192.240.29/yzm?d=1515824347343”);
httpGet.setHeader("Accept","*/*");
httpGet.setHeader("Connection","keep-alive");
httpGet.setHeader("User-Agent","Mozilla/5.0 (Windows NT10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132Safari/537.36");
HttpResponse httpResponse =httpClient.execute(httpGet);
if(httpResponse.getStatusLine().getStatusCode() == 200) {
SaveCookies(httpResponse);//保存獲得的JSESSIONID
// 請求和響應(yīng)都成功了
byte[] bytes;
bytes =EntityUtils.toByteArray(httpResponse.getEntity());
Message message=new Message();
Bundle bundle=new Bundle();
bundle.putByteArray("verify",bytes);
message.setData(bundle);
message.what=1001;
handle.sendMessage(message);//獲取驗(yàn)證碼
}
} catch (Exception e) {
e.printStackTrace();
}
}
這里是想服務(wù)器發(fā)送get請求,也就是獲得驗(yàn)證碼。
這里把獲得驗(yàn)證碼發(fā)送出去。
這里把驗(yàn)證碼顯示出來。
下面這個(gè)函數(shù)是保存從服務(wù)那邊獲得的JSESSIONID。
然后我們實(shí)現(xiàn)登錄功能。
這里我們再把JSESSIONID給添加到請求頭那里去,這樣我們就完美欺騙了服務(wù)器,我就是剛剛第一訪問你的那個(gè)我。(其他的頭可以根據(jù)抓包那里的頭來設(shè)置)
這里解析服務(wù)器返回我們的json數(shù)據(jù)。
到這里大家應(yīng)該都懂了吧。
具體思路就是給服務(wù)器發(fā)送http請求,然后保存服務(wù)器返回的JSESSIONID,然后我們訪問的時(shí)候都要把JSESSIONID添加到post請求頭那里,這樣我們就可以訪問了。
這是效果圖。
上述就是小編為大家分享的如何實(shí)現(xiàn)一個(gè)屬于自己的查成績app了,如果剛好有類似的疑惑,不妨參照上述分析進(jìn)行理解。如果想知道更多相關(guān)知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。
分享標(biāo)題:如何實(shí)現(xiàn)一個(gè)屬于自己的查成績app
當(dāng)前網(wǎng)址:http://www.rwnh.cn/article8/ghcsop.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站導(dǎo)航、微信公眾號(hào)、網(wǎng)站建設(shè)、網(wǎng)站營銷、企業(yè)建站、靜態(tài)網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)