文章出處

回到目錄

雜談

在進行android進行開發時,我們的數據一般通過接口來獲收,這里指的接口泛指web api,webservice,wcf,web應用程序等;它們做為服務端與數據庫進行直接通訊,而APP這塊通過向這些接口發Http請求來獲得數據,這樣的好處大叔認為,可以有效的降低軟件的開發難度,所以數據交互都被分離到了服務層而,而與客戶交互的功能完全都在APP端,這類似于目前比較流行的SOA架構,即一個服務為多種終端服務;無論是你WEB網站,手機IOS,手機Android,平板還是其它TV之類的,都統一調用服務層的接口!

說的有點遠了,下面來看一下在APP端發送Http時,如何與服務端API進行Session的共享

原理是需要我們清楚的

-〉客戶端

-〉(Request)訪問服務端頁面

-〉服務端產生SessionId

-〉存儲到服務端

-〉(Response)同時向客戶端相應

- 〉客戶端存儲把SessionID到Cookies里(.net平臺cookies里鍵名為ASP.NET_SessionId)

-〉下次請求,客戶端將在Request頭信息中把當前SessionID發到服務端

-〉服務端的SessionID通過過期時間維護它的有效性

實踐的代碼來自MSDN

選自:MSDN關于HttpClient的CookieContainer的文章

            Uri uri = new Uri("http://www.microsoft.com");
            HttpClientHandler handler = new HttpClientHandler();
            handler.CookieContainer = new CookieContainer();

            handler.CookieContainer.Add(uri, new Cookie("name", "value")); // Adding a Cookie
            HttpClient client = new HttpClient(handler);
            HttpResponseMessage response = await client.GetAsync(uri);
            CookieCollection collection = handler.CookieContainer.GetCookies(uri); // Retrieving a Cookie

大叔項目里的代碼

           Uri uri = new Uri(GetString(Resource.String.apiHost));
            HttpClientHandler handler = new HttpClientHandler();
            handler.CookieContainer = new CookieContainer();
            handler.CookieContainer.Add(uri, new Cookie("ASP.NET_SessionId", InMemory.SessionID)); // Adding a Cookie

            using (var http = new HttpClient(handler))
            {
                var content = new FormUrlEncodedContent(new Dictionary<string, string>() { });
                var response = http.PostAsync(GetString(Resource.String.apiHost) + "/Test/CurrentTaskListApi", content);

                var obj = JsonConvert.DeserializeObject<List<Task_Info>>(response.Result.Content.ReadAsStringAsync().Result);
                listView.Adapter = new Task_InfoListAdapter(this, obj);
            }

大家如果也在使用xamarin開發移動應用,就趕快去試試吧!

最后,大叔要說,對一個概念的認識程度決定了你所采取的解決方法!

回到目錄


文章列表




Avast logo

Avast 防毒軟體已檢查此封電子郵件的病毒。
www.avast.com


arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()