2014-03-03 35 views
0

我試圖通過發送用戶名/密碼使用post方法登錄到網頁。我設法成功地做到了這一點,但是我想要實現的是知道我是否成功登錄或者沒有(以Java編程)。我的方法是將html頁面的來源作爲一個字符串,並開始尋找單詞「登錄爲」,以確定記錄過程是否已成功完成或沒有。我試圖這樣做,並在Logcat中顯示字符串,但字符串似乎太長而無法顯示。確定是否通過使用POST方法發送證書成功登錄

那麼這甚至可能嗎?如果是這樣,這是實現所需要的唯一方法嗎?

謝謝。

+0

爲什麼你的服務器發送HTML,如果你從一個應用程序調用它? – njzk2

回答

0

通常當你做一個帖子http你做了一個異步任務,如果是這樣的話,那麼你需要重寫一個名爲onpostexecute的方法,它可以讓你做處理,並改變一個(通常是靜態的)標誌知道用戶現在已經登錄。

0

如果您使用ASyncTask進行網絡調用,那麼您可以返回一個字符串,該字符串將包含您從您試圖連接的服務器獲得的響應。這一切都在後臺通過doInBackground()

在它運行在主線程的onPostExecute()功能運行,這樣你就可以檢查是否字符串包含任何文本是一個成功的登錄和登錄失敗。

if (login.contains("success") { 
    textView.setText("You have logged in"); 
else if (login.contains("failed") { 
    textView.setText("Login failed, please try again later"); 

你做的HttpPost應該從服務器返回一些東西。你需要這些信息才能做你需要的。最好的辦法是讓你的服務器返回一個JSON響應,你可以解析並得到詳細信息

0

當你的android應用程序發送數據到服務器時,服務器應該發回一個響應。

JSON格式現在很常見。

PHP是處理您的數據和響應的好工具。

這裏是你會怎麼做,

$response = array(); 

if($LoginSuccessfull){ 
    $response = array('success'=> true, 'message'=> 'logged in successfully'; 
}else{ 
    $response = array('success'=> false, 'message'=> 'loggin failure'; 
} 

echo json_encode($response); 
+0

關鍵是我沒有能力編輯php文件返回一個JSON響應登錄,因爲這不是我的服務器,我無法控制它 – user3091639

+0

@ user3091639請在你的文章中提及,那是什麼被返回該服務,您需要能夠讀取該響應 – meda

0

從你HttpClient的,你可以檢查一個cookie設置(假設你使用cookies來你的用戶進行身份驗證)爲例,你得到的名單從這個代碼餅乾:

List<Cookie> cookies = client.getCookieStore().getCookies(); 

和檢查cookie存在

相關問題