當前位置:首頁 » 安卓系統 » android與伺服器端交互

android與伺服器端交互

發布時間: 2022-06-08 05:33:13

1. android與WEB伺服器交互時,如何保證在同一個會話Session中通信

最近在開發項目的過程中,遇到android與web伺服器要在同一session下通信的問題。在解決問題前先回顧下Session與Cookie:Cookie和Session都為了用來保存狀態信息,都是保存客戶端狀態的機制,它們都是為了解決HTTP無狀態的問題而所做的努力。Session可以用Cookie來實現,也可以用URL回寫的機制來實現。Cookie和Session有以下明顯的不同點:1)Cookie將狀態保存在客戶端,Session將狀態保存在伺服器端;2)Cookies是伺服器在本地機器上存儲的小段文本並隨每一個請求發送至同一個伺服器。網路伺服器用HTTP頭向客戶端發送cookies,在客戶終端,瀏覽器解析這些cookies並將它們保存為一個本地文件,它會自動將同一伺服器的任何請求縛上這些cookies。3)Session是針對每一個用戶的,變數的值保存在伺服器上,用一個sessionID來區分是不同用戶session變數,這個值是通過用戶的瀏覽器在訪問的時候返回給伺服器,當客戶禁用cookie時,這個值也可能設置為由get來返回給伺服器;4)就安全性來說:當你訪問一個使用session 的站點,同時在自己機器上建立一個cookie,建議在伺服器端的SESSION機制更安全些.因為它不會任意讀取客戶存儲的信息。Session機制Session機制是一種伺服器端的機制,伺服器使用一種類似於散列表的結構(也可能就是使用散列表)來保存信息。當程序需要為某個客戶端的請求創建一個session的時候,伺服器首先檢查這個客戶端的請求里是否已包含了一個session標識 - 稱為 session id,如果已包含一個session id則說明以前已經為此客戶端創建過session,伺服器就按照session id把這個 session檢索出來使用(如果檢索不到,可能會新建一個),如果客戶端請求不包含session id,則為此客戶端創建一個session並且生成一個與此session相關聯的session id,session id的值應該是一個既不會重復,又不容易被找到規律以仿造的字元串,這個 session id將被在本次響應中返回給客戶端保存。Session的實現方式1) 使用Cookie來實現伺服器給每個Session分配一個唯一的JSESSIONID,並通過Cookie發送給客戶端。當客戶端發起新的請求的時候,將在Cookie頭中攜帶這個JSESSIONID。這樣伺服器能夠找到這個客戶端對應的Session。2 )使用URL回顯來實現URL回寫是指伺服器在發送給瀏覽器頁面的所有鏈接中都攜帶JSESSIONID的參數,這樣客戶端點擊任何一個鏈接都會把JSESSIONID帶給伺服器。 如果直接在瀏覽器中輸入url來請求資源,Session是匹配不到的。Tomcat對 Session的實現,是一開始同時使用Cookie和URL回寫機制,如果發現客戶端支持Cookie,就繼續使用Cookie,停止使用URL回寫。如果發現Cookie被禁用,就一直使用URL回寫。jsp開發處理到Session的時候,對頁面中的鏈接記得使用 response.encodeURL() 。回顧完Session和Cookie,我們來說說為什麼手機端與伺服器交互沒有實現在同一session下?1)原因很簡單,就是因為android手機端在訪問web伺服器時,沒有給http請求頭部設置sessionID,而使用web瀏覽器作為客戶端訪問伺服器時,在客戶端每次發起請求的時候,都會將交互中的sessionID:JSESSIONID設置在Cookie頭中攜帶過去,伺服器根據這個sessionID獲取對應的Session,而不是重新創建一個新Session(除了這個Session失效)。以java.net.HttpURLConnection發起請求為例:獲取Cookie: URL url = new URL(requrl); HttpURLConnection con= (HttpURLConnection) url.openConnection(); // 取得sessionid. String cookieval = con.getHeaderField("set-cookie"); String sessionid; if(cookieval != null) { sessionid = cookieval.substring(0, cookieval.indexOf(";")); } //sessionid值格式:JSESSIONID=,是鍵值對,不是單指值發送設置cookie: URL url = new URL(requrl); HttpURLConnectioncon= (HttpURLConnection) url.openConnection();

2. 安卓怎樣與伺服器的交互

利用HTTP請求啊 ,完成登陸等操作啊 , 如果需要與伺服器進行數據交互,可以選擇XML或者webservice進行數據交互 查看原帖>>

3. android怎麼和伺服器通訊

基本上是2種方式, HTTP 協議,或者 用Socket。
這2種方式都是需要伺服器端的IP地址。HTTP協議的話,有多種介面可以調用你可以用Java類庫封裝的HttpConnection 或者用Apach的開源項目的 HttpGet 或者HttpPost ,伺服器端 需要 編寫 Serlvet來響應客戶端的請求。
Sokcet 的話, 就是 伺服器端 不斷監聽 雙方約定好的埠號,客戶端通過伺服器IP去請求連接,經過握手之後,連接成功,得到Socket 的輸入輸出流,直接操作即可。

4. android平台的app 手機客戶端和後台伺服器怎麼進行數據交互的

首先不要管安卓端還是蘋果端,現在一般都是響應式的app,你放到安卓或者蘋果或者pc或者平板都是沒有問題的。一般採用的是http介面通訊,或者socket連接。具體你要去查資料找Demo了。而且現在主流是採用html5開發或者混合開發了。所以最好是伺服器提供appAPI介面,通過http訪問伺服器,獲取數據,數據一般是json,或者xml,拿到後解析數據就可以了,然後再用UI框架或者其他框架或者自定義的UI封裝下格式很漂亮了,至於cookie和session等,看你的習慣,網路驗證和簽名那些也自己看習慣,如果涉及到大數據,還需要引入第三方框架的,直接引入就可以了,不過推薦自己寫,防止侵權。都是很通用的。

5. android與伺服器交互用post好還是get

要根據實際應用的需求和數據量。
HTTP 定義了與伺服器交互的不同方法,最基本的方法是 GET 和 POST。
事實上 GET 適用於多數請求,而保留 POST 僅用於更新站點。根據 HTTP 規范,GET 用於信息獲取,而且應該是 安全的和 冪等的。所謂安全的意味著該操作用於獲取信息而非修改信息。換句話說,GET 請求一般不應產生副作用。冪等的意味著對同一 URL 的多個請求應該返回同樣的結果。完整的定義並不像看起來那樣嚴格。從根本上講,其目標是當用戶打開一個鏈接時,它可以確信從自身的角度來看沒有改變資源。比如,新聞站點的頭版不斷更新。雖然第二次請求會返回不同的一批新聞,該操作仍然被認為是安全的和冪等的,因為它總是返回當前的新聞。反之亦然。
POST 請求就不那麼輕鬆了。POST 表示可能改變伺服器上的資源的請求。仍然以新聞站點為例,讀者對文章的註解應該通過 POST 請求實現,因為在註解提交之後站點已經不同了(比方說文章下面出現一條註解);
在FORM提交的時候,如果不指定Method,則默認為GET請求,Form中提交的數據將會附加在url之後,以?分開與url分開。字母數字字元原樣發送,但空格轉換為「+「號,其它符號轉換為%XX,其中XX為該符號以16進製表示的ASCII(或ISO Latin-1)值。GET請求請提交的數據放置在HTTP請求協議頭中,而POST提交的數據則放在實體數據中;
GET方式提交的數據最多隻能有1024位元組,而POST則沒有此限制。

6. android怎麼實現post方法與伺服器交互

public static String LoginOfPost(String username,String password){
HttpURLConnection conn=null;
try {
URL url=new URL("http://192.168.1.4:8080/AndroidServer/LoginServlet");
conn=(HttpURLConnection) url.openConnection();
conn.setRequestMethod("POST");
conn.setConnectTimeout(10000);
conn.setReadTimeout(5000);
conn.setDoOutput(true);
//post請求的參數
String data="username="+username+"&password="+password;
OutputStream out=conn.getOutputStream();
out.write(data.getBytes());
out.flush();
out.close();

conn.connect();
int code=conn.getResponseCode();
if(code==200){
InputStream is=conn.getInputStream();
String state=getStringFromInputStream(is);
return state;
}

} catch (Exception e) {
e.printStackTrace();
}finally{
if(conn!=null){
conn.disconnect();
}
}

return null;
}

7. android怎麼與伺服器交互

這個實例對新手來說只會更迷茫。給點思路:要明白android和伺服器交互的框架是怎麼樣的。最簡單的理解就是:介面,客戶端如何發起請求,伺服器怎麼樣處理收到的請求。首先要了解android客戶端怎麼樣才能和伺服器通訊。再自己學點伺服器開發的知識,做個最簡單的實例。 查看原帖>>

8. 如何搭建一個與Android客戶端交互的伺服器

android客戶端和伺服器端是基於IntentService的,具體如下:
後台使用簡單的servlet,支持GET或POST。這個servlet最終返回給前台一個字元串flag,值是true或false,表示登錄是否成功。
然後在安卓的ADT上創建一個安卓項目,建立兩個Activity,分別作為登錄界面和登錄成功界面。
HTTP的訪問公共類,用於處理GET和POST請求。
IntentService服務,用於在後台以隊列方式處理耗時操作。
在AndroidManifest.xml中注冊IntentService。注意uses-permission節點,為程序開啟訪問網路的許可權。
登陸界面處理,注意按鈕監聽事件中,使用Intent將要傳遞的值傳給service。接收廣播類中,同樣使用Intent將要傳遞的值傳給下一個Activity。在onCreate()中,動態注冊接收廣播類的實例receiver。在接收廣播類中,不要使用完畢後忘記注銷接收器,否則會報一個Are you missing a call to unregisterReceiver()? 的異常。

熱點內容
酷狗怎麼清除緩存 發布:2024-09-08 11:17:29 瀏覽:154
開發板主板交叉編譯 發布:2024-09-08 11:12:59 瀏覽:167
手機學c語言軟體 發布:2024-09-08 11:12:03 瀏覽:281
java培訓課程有那些 發布:2024-09-08 11:11:30 瀏覽:651
舊筆記本如何裝安卓系統 發布:2024-09-08 11:10:20 瀏覽:952
安卓怎麼關閉藍牙自動連接 發布:2024-09-08 10:58:12 瀏覽:11
tsm伺服器修改ip地址 發布:2024-09-08 10:21:06 瀏覽:615
共享雲源碼 發布:2024-09-08 10:01:10 瀏覽:397
ios應用上傳 發布:2024-09-08 09:39:41 瀏覽:441
ios儲存密碼哪裡看 發布:2024-09-08 09:30:02 瀏覽:874