Android折騰之登錄校園網關


學校里登錄校園網關的代碼是我之前最開始接觸python時學習的東西苗踪。不過很簡單只要四行代碼跪者。

  • 將post請求body內容對進行urlencode編碼
  • 發(fā)送到校園網網關的地址
    之后設置開機自啟動、那樣每次開電腦就不用手動打開瀏覽器登錄網關了

這次想要實現(xiàn)android上的自動登錄妹卿。

首先是查到了PythonInterpreter

但是集成這個東西到android里面StackOverflow感覺笨笨的吧旺矾。。好像也不是啥主流的思路夺克。箕宙。

以及Qpython

但好像是主要被用來開發(fā)android的。铺纽。下載出來例子們都是怎么操作android里的相冊怎么操作藍牙啥的柬帕。。雖然確實可以用來跑腳本登錄網關狡门。陷寝。但是這會需要我打開Qpython再執(zhí)行對應程序。其馏。也不是很開心凤跑。。

算了我還是用java訪問網關來登錄吧祭出Retrofit

我這個水平也就考慮不到什么場景適合用什么框架了叛复。仔引。總共用過它和volley褐奥。肤寝。后來感覺volley確實被評價地不如它了。抖僵。鲤看。

public interface networkApis {
    @FormUrlEncoded
    @POST
    Call<ResponseBody> getLogin(@Url String url,
                                @Field("DDDDD") String id,
                                @Field("upass")String loginPwd,
                                @Field("0MKKey")String boo);
}

簡單定義一個接口。耍群。很快的义桂。


這個時候重點應該轉移到android的事件監(jiān)聽上去

整個環(huán)節(jié)里嘗試過兩個類

if (action.equals(ConnectivityManager.CONNECTIVITY_ACTION)) 

這個是網上大家用的比較多的監(jiān)聽網絡狀態(tài)

    /**
     * A change in network connectivity has occurred. A default connection has either
     * been established or lost. The NetworkInfo for the affected network is
     * sent as an extra; it should be consulted to see what kind of
     * connectivity event occurred.
     * <p/>
     * If this is a connection that was the result of failing over from a
     * disconnected network, then the FAILOVER_CONNECTION boolean extra is
     * set to true.
     * <p/>
     * For a loss of connectivity, if the connectivity manager is attempting
     * to connect (or has already connected) to another network, the
     * NetworkInfo for the new network is also passed as an extra. This lets
     * any receivers of the broadcast know that they should not necessarily
     * tell the user that no data traffic will be possible. Instead, the
     * receiver should expect another broadcast soon, indicating either that
     * the failover attempt succeeded (and so there is still overall data
     * connectivity), or that the failover attempt failed, meaning that all
     * connectivity has been lost.
     * <p/>
     * For a disconnect event, the boolean extra EXTRA_NO_CONNECTIVITY
     * is set to {@code true} if there are no connected networks at all.
     */
    @SdkConstant(SdkConstantType.BROADCAST_INTENT_ACTION)
    public static final String CONNECTIVITY_ACTION = "android.net.conn.CONNECTIVITY_CHANGE";

有關這個字段的詳細信息。我的問題主要是在這個地方

 * Instead, the receiver should expect another broadcast soon, indicating either that the failover attempt succeeded 

也就是說要是網絡狀態(tài)改變蹈垢、并且正在嘗試進行一個網絡連接慷吊。。之后它會再次發(fā)送一個broadcast來告訴你是否連接成功曹抬。溉瓶。這只是我給出的一個看起來似乎可以解釋的答案。實際情況是兩次發(fā)送過來時NetworkInfo都會顯示已連接。堰酿。怎么辦疾宏。我也很無奈

校園網讓人難受在如果兩次請求發(fā)送的時間過于接近。触创。會讓我斷掉網坎藐。。 這個操作我在postman上也復現(xiàn)到了哼绑。

感覺有一百種可以犯的錯誤岩馍。。都是因為我的兩次請求過于接近導致的抖韩。
當然因為這個操作并不是一個正持鳎可以在瀏覽器上進行的操作。茂浮。于是具體是哪個錯我一直不知道赦肋。。

switch(Msg){
        case 0:
        case 1:
            if((Msg==1)&&(msga!="")){
            switch(msga){
            case 'error0':
                document.write("本IP不允許Web方式登錄<br>The IP does not allow Web-log");
                break;
            case 'error1':
                document.write("本賬號不允許Web方式登錄<br>The account does not allow Web-log");
                break;
            case 'error2':
                document.write("本賬號不允許修改密碼<br>This account does not allow change password");
                break;              
            default:
                document.write(msga);
                break;}
            }
            else document.write("賬號或密碼不對励稳,請重新輸入<br>Ivalid account or password, please login again");
        break;              
    case 2:
        document.write("該賬號正在IP為:"+xip+"的機器上使用,<br><br>請點擊<a href='a11.htm'>繼續(xù)</a>斷開它的連接并重新輸入用戶名和密碼登陸本機囱井。");
        break;              
    case 3:
        document.write("本賬號只能在指定地址使用<br>This account can be used on the appointed address only."+pp+xip);
于是選擇WifiManager類監(jiān)聽
if (action.equals(WifiManager.NETWORK_STATE_CHANGED_ACTION)) {

這是另一個監(jiān)聽wifi連接狀態(tài)的
它給我請求了八次訪問驹尼。。給我一種它其實伴隨著類似于三次握手協(xié)議的變化進行state_change庞呕。然而雖然訪問次數(shù)多新翎。。但是開始的幾個很大幾率會fail住练。所以我一度認為其實當最后一次廣播時連接確實建立地啰,只有那次才會post成功。事實證明還是年輕了讲逛。亏吝。多嘗試幾次就會失敗的。盏混。

后來的答案是使用了Handler并進行一定的延時蔚鸥,當之后的廣播發(fā)送來時clear掉消息隊列。

handler.removeMessages(1);
handler.sendEmptyMessageDelayed(1, 50);//一個50毫秒的延時就夠了

其實跳出這個思路來看的話一個非常合理的方案是每次請求之前ping一下baidu就好了许赃。連接著就不再請求止喷。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市混聊,隨后出現(xiàn)的幾起案子弹谁,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,539評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件预愤,死亡現(xiàn)場離奇詭異沟于,居然都是意外死亡,警方通過查閱死者的電腦和手機鳖粟,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,594評論 3 396
  • 文/潘曉璐 我一進店門社裆,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人向图,你說我怎么就攤上這事泳秀。” “怎么了榄攀?”我有些...
    開封第一講書人閱讀 165,871評論 0 356
  • 文/不壞的土叔 我叫張陵嗜傅,是天一觀的道長。 經常有香客問我檩赢,道長吕嘀,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,963評論 1 295
  • 正文 為了忘掉前任贞瞒,我火速辦了婚禮偶房,結果婚禮上,老公的妹妹穿的比我還像新娘军浆。我一直安慰自己棕洋,他們只是感情好,可當我...
    茶點故事閱讀 67,984評論 6 393
  • 文/花漫 我一把揭開白布乒融。 她就那樣靜靜地躺著掰盘,像睡著了一般。 火紅的嫁衣襯著肌膚如雪赞季。 梳的紋絲不亂的頭發(fā)上愧捕,一...
    開封第一講書人閱讀 51,763評論 1 307
  • 那天,我揣著相機與錄音申钩,去河邊找鬼次绘。 笑死,一個胖子當著我的面吹牛撒遣,可吹牛的內容都是我干的断盛。 我是一名探鬼主播,決...
    沈念sama閱讀 40,468評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼愉舔,長吁一口氣:“原來是場噩夢啊……” “哼钢猛!你這毒婦竟也來了?” 一聲冷哼從身側響起轩缤,我...
    開封第一講書人閱讀 39,357評論 0 276
  • 序言:老撾萬榮一對情侶失蹤命迈,失蹤者是張志新(化名)和其女友劉穎贩绕,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體壶愤,經...
    沈念sama閱讀 45,850評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡淑倾,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 38,002評論 3 338
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了征椒。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片娇哆。...
    茶點故事閱讀 40,144評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖勃救,靈堂內的尸體忽然破棺而出碍讨,到底是詐尸還是另有隱情,我是刑警寧澤蒙秒,帶...
    沈念sama閱讀 35,823評論 5 346
  • 正文 年R本政府宣布勃黍,位于F島的核電站,受9級特大地震影響晕讲,放射性物質發(fā)生泄漏覆获。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,483評論 3 331
  • 文/蒙蒙 一瓢省、第九天 我趴在偏房一處隱蔽的房頂上張望弄息。 院中可真熱鬧,春花似錦勤婚、人聲如沸摹量。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,026評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至废亭,卻和暖如春国章,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背豆村。 一陣腳步聲響...
    開封第一講書人閱讀 33,150評論 1 272
  • 我被黑心中介騙來泰國打工液兽, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人掌动。 一個月前我還...
    沈念sama閱讀 48,415評論 3 373
  • 正文 我出身青樓四啰,卻偏偏與公主長得像,于是被迫代替她去往敵國和親粗恢。 傳聞我的和親對象是個殘疾皇子柑晒,可洞房花燭夜當晚...
    茶點故事閱讀 45,092評論 2 355

推薦閱讀更多精彩內容