Android註冊時總是出現"驗證碼不正確"問題的解決

Android註冊時總是出現"驗證碼不正確"問題的解決。

註冊時總是出現“驗證碼不正確”,本來以為這個問題沒什麼意義,但是今天在群裡看到一個同學也遇到瞭這個問題,並且折騰好久,於是便立馬打開電腦,覺得還是應該把這個問題記錄一下。

【問題描述】:

後臺給瞭兩個接口:獲取短信驗證碼後———–>進行註冊(註冊需要用戶名,密碼和手機驗證碼)

這本是個再簡單不過的工作瞭,於是二話不說開始擼代碼,分分鐘搞定。

可是詭異的事情發生瞭總是“驗證碼不正確”,看瞭後臺打的Log日志也確實是“驗證碼”不正確,這還不算什麼關鍵讓

我覺得蹊蹺的是,如果直接用瀏覽器去請求第一個獲取驗證碼的接口,緊接著再卻請求註冊接口,瀏覽器返回的數

數據確實“註冊成功”!!!我的第一反應是這不可能!但是以防一,本姑涼還是謙虛地檢查瞭一下那少得可憐的幾行

代碼,並再次對瞭下接口確定數據沒有傳錯。恩,確實確實沒有問題!!!我有點方瞭,難道是我在做夢,這幾行

小代碼居然攔住瞭姐,說出去還怎麼在it界混瞭,於是我很無恥的求助瞭我爸,他很是不屑,說不能出現這種情況,

但是最終他還是不情願的幫我試瞭一下,同樣出現瞭詭異的結果,他開始gg瞭。

但是,他發現瞭一點蛛絲馬跡:

他問我,“這個sessionId不用當做參數傳給註冊接口嗎?”。

我重新審查瞭接口文檔後,很自信的說“不用!”

“確定?”

“確定以及肯定。”

然後我又發揮我的個人魅力讓ios的小夥伴試瞭下這倆接口。

結果他卻“註冊成功瞭”!!!晴天霹靂吶!!!

我把這個消息又告訴瞭粑粑“ios那邊是沒問題”。

好吧如此看來,就是我們安卓有問題瞭。

於是粑粑便開始各種嘗試,post請求不行,用get試試,還不行把retrofit請求改為okhttputils,還是不行,

最後他連排列組合都用上瞭,還是不行。

然後,粑粑就拋棄瞭我,繼續去擼他自己的代碼瞭。。。

姐姐我怎麼可能這麼容易放棄,但是這個接口還是其他公司寫的,沒聯系上寫這個接口的後臺,於是姐就隨便揪瞭

一個本公司的後臺,令我感到奇怪的是,他同樣詢問瞭我“sessionId”,這不得不讓我有所思考瞭。於是

我就問他能不能從“sessionId”下手,然後來順藤摸瓜,找出元兇。他也是想瞭有一會,突然他打瞭個響指,又朝我拋

瞭個媚眼“你先用一個瀏覽器去調那個驗證碼接口,接著用另一個不同的瀏覽器再去調註冊接口,看看什麼情況”。結

果是瀏覽器這次也“驗證碼錯誤瞭”。我的臉更方瞭。他卻自信的說“我知道原因瞭。”你在調用登錄接口時,在頭裡面

獲得的sessionId 傳個'JSESSIONID',*********”,於是我加瞭一行代碼:

.addHeader("Cookie", "JSESSIONID=" + jsessionid);

再次運行程序,居然“註冊成功瞭”!

【解決辦法】以OkHtttpUtils為例:

                                            OkHttpUtils.post()
                                            .url(ServerConfig.REMOTE_BASE_URL + ServerConfig.REGISTER_URL)
                                            .addHeader("Cookie", "JSESSIONID=" + ssionId)
                                            .addParams("account", account)
                                            .addParams("phoneCode", phoneCode)
                                            .addParams("password", password)
                                            .build()
                                            .execute(new StringCallback() {

發佈留言