簡體   English   中英

從android登錄網站

[英]Logging into a website from android

基本上,我的android應用程序中有一個表單,可以讓用戶輸入他/她的用戶名和密碼,然后將其發布到用PHP在線制作的非常簡單的登錄頁面中。 然后,我需要訪問第二個Pae,該Pae從xml文件中提取數據-為了訪問此頁面,用戶必須登錄。用戶看到的xml頁面取決於他們的用戶名。

在我的登錄頁面上,我有

session_start();
session_register("username");

在檢查登錄的每個頁面的開頭,我都有

<?php
session_start();
?>

並檢查用戶是否登錄,我使用一個簡單的if語句

if(!session_is_registered("username")){?> 
display whatever

else bla

我如何在我的android應用程序中使其工作? 登錄后,我無法進入xml頁面,因為它無法識別出我已登錄。

首先,使用網絡瀏覽器執行登錄以確保其正常運行。 然后再次做同樣的事情,並使用Live Http HeadersCharles Proxy之類的東西來檢查請求和響應頭。 我想成功登錄后會來回傳遞某種會話cookie。 您需要從成功登錄的響應中讀取cookie,然后將其與XML頁面的請求一起發送回去。

編輯
這個線程的問答中,有一個簡單的示例,該示例使用HttpClient使用cookie執行帖子,而使用HttpsUrlConnection進行cookie發布。

如果是一次檢索,為什么還要煩惱會話? 讓網站使用應用程序的用戶憑據將XML文件作為對請求的直接響應。

如果出於某種原因需要使用會話,則需要搜索對POST請求的答復以獲取會話ID,然后將會話ID隨XML數據請求一起提供。 會話ID可能在cookie中,也可以在頁面的超鏈接中(取決於您如何設置登錄名)。

PHP會話通過cookie實現。 每當您調用session_start() ,響應都將包含Set-Cookie標頭,該標頭設置包含PHP會話ID的瀏覽器cookie。 默認情況下(除非您已使用session.name PHP配置選項將cookie重命名),否則cookie的名稱為PHPSESSID

登錄用戶后,需要使用包含會話ID的Cookie標頭來發出后續請求。 在提交每個請求之前,只需確保重新使用用於登錄用戶的CookieStore對象(在任何新的HttpClient實例上調用AbstractHttpClient#setCookieStore )。

本質上,您需要使用android中的httpclient庫以編程方式執行發布,從響應(set-cookie headeR)中提取會話cookie,並確保在向服務器的任何后續請求中都包含該cookie。

你可以谷歌如何使用HttpClient的做一個職位,像這樣 這是一個使用httpclient將cookie插入請求的示例。 我會讓您閱讀一些javadocs /尋找更多示例來將它們放在一起。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM