大叔也说Xamarin~Android篇~为HttpClient共享Session,android与api的session共享机制

简介:

杂谈

在进行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开发移动应用,就赶快去试试吧!

最后,大叔要说,对一个概念的认识程度决定了你所采取的解决方法!

本文转自博客园张占岭(仓储大叔)的博客,原文链接:大叔也说Xamarin~Android篇~为HttpClient共享Session,android与api的session共享机制,如需转载请自行联系原博主。

目录
相关文章
|
6月前
|
前端开发 编译器 Android开发
构建高效Android应用:探究Kotlin协程的异步处理机制
【4月更文挑战第2天】在现代移动应用开发中,提供流畅且响应迅速的用户体验是至关重要的。随着Android平台的发展,Kotlin语言凭借其简洁性和功能性编程的特点成为了主流选择之一。特别地,Kotlin协程作为一种新型的轻量级线程管理机制,为开发者提供了强大的异步处理能力,从而显著提升了应用程序的性能和响应速度。本文将深入探讨Kotlin协程在Android中的应用,分析其原理、实现以及如何通过协程优化应用性能。
|
4天前
|
存储 安全 Android开发
探索Android与iOS的隐私保护机制
在数字化时代,移动设备已成为我们生活的一部分,而隐私安全是用户最为关注的问题之一。本文将深入探讨Android和iOS两大主流操作系统在隐私保护方面的策略和实现方式,分析它们各自的优势和不足,以及如何更好地保护用户的隐私。
|
4天前
|
监控 Java 应用服务中间件
高级java面试---spring.factories文件的解析源码API机制
【11月更文挑战第20天】Spring Boot是一个用于快速构建基于Spring框架的应用程序的开源框架。它通过自动配置、起步依赖和内嵌服务器等特性,极大地简化了Spring应用的开发和部署过程。本文将深入探讨Spring Boot的背景历史、业务场景、功能点以及底层原理,并通过Java代码手写模拟Spring Boot的启动过程,特别是spring.factories文件的解析源码API机制。
16 2
|
1月前
|
消息中间件 存储 Java
Android消息处理机制(Handler+Looper+Message+MessageQueue)
Android消息处理机制(Handler+Looper+Message+MessageQueue)
38 2
|
23天前
|
消息中间件 存储 Java
Android面试高频知识点(2) 详解Android消息处理机制(Handler)
Android面试高频知识点(2) 详解Android消息处理机制(Handler)
|
27天前
|
消息中间件 存储 Java
Android面试高频知识点(2) 详解Android消息处理机制(Handler)
Android面试高频知识点(2) 详解Android消息处理机制(Handler)
47 1
|
28天前
|
存储 安全 数据安全/隐私保护
探索安卓与iOS的隐私保护机制####
【10月更文挑战第15天】 本文深入剖析了安卓和iOS两大操作系统在隐私保护方面的策略与技术实现,旨在揭示两者如何通过不同的技术手段来保障用户数据的安全与隐私。文章将逐一探讨各自的隐私控制功能、加密措施以及用户权限管理,为读者提供一个全面而深入的理解。 ####
50 1
|
30天前
|
消息中间件 存储 Java
Android消息处理机制(Handler+Looper+Message+MessageQueue)
Android消息处理机制(Handler+Looper+Message+MessageQueue)
44 2
|
2月前
|
存储 缓存 Android开发
Android RecyclerView 缓存机制深度解析与面试题
本文首发于公众号“AntDream”,详细解析了 `RecyclerView` 的缓存机制,包括多级缓存的原理与流程,并提供了常见面试题及答案。通过本文,你将深入了解 `RecyclerView` 的高性能秘诀,提升列表和网格的开发技能。
67 8
|
3月前
|
消息中间件 存储 Java
Android面试高频知识点(2) 详解Android消息处理机制(Handler)
Android 消息处理机制估计都被写烂了,但是依然还是要写一下,因为Android应用程序是通过消息来驱动的,Android某种意义上也可以说成是一个以消息驱动的系统,UI、事件、生命周期都和消息处理机制息息相关,并且消息处理机制在整个Android知识体系中也是尤其重要,在太多的源码分析的文章讲得比较繁琐,很多人对整个消息处理机制依然是懵懵懂懂,这篇文章通过一些问答的模式结合Android主线程(UI线程)的工作原理来讲解,源码注释很全,还有结合流程图,如果你对Android 消息处理机制还不是很理解,我相信只要你静下心来耐心的看,肯定会有不少的收获的。
202 3
Android面试高频知识点(2) 详解Android消息处理机制(Handler)