
我想在 APP 登陆,保存一下 cookies,都得实现好几个类。我在 python 和 node.js 都只需要几十行代码。
我用的是 okhttp,是因为这个库本身比较复杂吗?有没有像 python 的 requests 一样轻松简单的库
1 eminemcola 2019-08-11 16:09:15 +08:00 首先 OKHTTP 和 Android SDK 无关… |
2 pdog18 2019-08-11 16:12:54 +08:00 okhttp 设置 cookiejar 就好了,然后看你想如何保存,这个需要你来自定义,其实也可以几行代码就好了。 |
3 yinzhili 2019-08-11 17:37:26 +08:00 这是因为 java 语言相对比较繁琐 你要去用 ObjectiveC 做 iOS 开发也会发现,复杂度也是高于 py 和 node 的,到时候岂不是要来抱怨 [iOS 设计这么复杂] |
4 iPhoneXI 2019-08-11 18:06:38 +08:00 via Android 试试 kotlin ? |
5 rb6221 2019-08-11 18:10:56 +08:00 via iPhone 你说的复杂是代码行数吗? 如果是的那怪 java 吧 如果不是的,只能说明你不熟悉客户端开发的理念 |
6 hoyixi 2019-08-11 18:12:07 +08:00 你说的是一回事吗,Py 和 node 都是服务器端,Android 是客户端 Web 用浏览器登录,浏览器帮你做了不少工作;如果自己实现客户端,维护一些状态、且和服务器保持一致,当然你得自己写代码 |
7 ochatokori 2019-08-11 18:26:58 +08:00 via Android 其实你只是觉得 java 干嘛都得搞个类和 pyjs 这些动态语言相比麻烦得不是一点(我就是这样 |
8 wakan190 2019-08-11 18:31:02 +08:00 via Android python 主要面向过程的,会直接些 |
9 HuHui 2019-08-11 19:21:07 +08:00 api 实现的粒度更细吧 |
10 AlvaIM 2019-08-11 19:22:51 +08:00 封装好了的话都不会麻烦, 主要是封装得不行 |
11 locoz 2019-08-11 19:25:31 +08:00 via Android @eminemcola #1 Python 的 requests 库也是第三方库,也和 Python 标准库无关 |
12 locoz 2019-08-11 19:27:27 +08:00 via Android 复杂不是 Android 的问题,而是 Java 的问题,语言设计者的理念不同导致了 Java 写起来会比 Python 繁琐一些。 |
13 luozic 2019-08-11 19:29:20 +08:00 via iPhone Java 自己的坑 ,可以试试 kotlin |
14 lihongjie0209 2019-08-11 19:30:35 +08:00 首先这个和安卓没关系 其次这是设计理念的问题, 脚本语言适合一次性的简短的任务, 当然直接撸最好了. 稍微复杂的一点的任务, 需要多人维护的, 需要扩展性的, 不管是什么语言都需要 OOP 和设计模式那一套. |
15 godlovesxcjtest 2019-08-11 19:34:15 +08:00 via Android 保存 cookie 有一个 github 项目,一行代码基本上就能搞定 |
16 BBCCBB 2019-08-11 20:51:31 +08:00 okohttp 只是一个基础库, 你可以用包装了他的库,比如 retrofit 或者 feign. 就想 python 里的 requests 页包装了 urllib3. 如果你用 urllib3 自己撸,也有很多事情要做. |
17 YUyu101 2019-08-12 00:23:45 +08:00 没办法,类多一是写的人爽,思路清晰,二是扩展的人爽,只要继承实现,其他的逻辑都不用动,如果只想简单用用就会很不爽,因为你为了一个小功能而付出巨大的时间成本搞清他是怎么实现的 |
18 Building 2019-08-12 00:32:44 +08:00 via iPhone 正如你所说的,你觉得 Python 和 node.js 比较简单,是因为复杂的别人都在库里帮你写好了。 |
19 jinliming2 2019-08-12 02:03:54 +08:00 via iPhone Java 强类型,很多地方限制,所以比较繁琐。 py、js 弱类型,所以相对比较容易实现,把类型推导交给解释器。 语言面向的方向不同而已。 |
Java 想要舒服的写代码,要备好一堆 code generator |
21 wdv2ly 2019-08-12 07:30:49 +08:00 via Android 拿平台和语言比?那你可以用 py 开发 android,试试复杂度 |
22 jaskle 2019-08-12 08:05:45 +08:00 via Android 规范意味着复杂,随意意味着简单,怎么能跟一个强类型语言比这个……所以我选择 nodejs |
23 HenryW 2019-08-12 08:08:15 +08:00 via iPhone 语言库的实现和使用逻辑跟系统有什么关系… |
24 pythonnoob 2019-08-12 08:17:20 +08:00 via iPhone @jinliming2 python 并不是弱类型,js 才是 |
25 itskingname 2019-08-12 08:20:17 +08:00 via iPhone @jinliming2 纠正一下,Python 是动态强类型语言。 |
26 godoway 2019-08-12 08:27:18 +08:00 via Android 与其说复杂,不如说为这个库做得这么简单, |
27 hbolive 2019-08-12 09:07:45 +08:00 PHP 保存 cookies 只要一句话,PHP 骄傲了吗? 其实吧,也没那么难.jpg |
28 yidinghe 2019-08-12 09:12:26 +08:00 via Android |
29 unforgiven 2019-08-12 09:41:49 +08:00 @luozic 这个和语言都没关系,一个是自己实现一个是 call 别人的 api 当然代码量不一样 |
31 xloger 2019-08-12 11:25:22 +08:00 这是封装程度不同的原因。楼主所说的保存 cookies,我这边创建 okHttpClient 的相关代码如下: val inDiskCookieStore = InDiskCookieStore(XInit.applicationContext) private var cookieHandler: CookieManager = CookieManager(inDiskCookieStore, CookiePolicy.ACCEPT_ALL) private val okHttpClient = OkHttpClient.Builder() .cookieJar(JavaNetCookieJar(cookieHandler)) InDiskCookieStore 是我自己创建的,cookieJar 和 cookieManager 的作用感兴趣可以自行了解,直接使用 okhttp 自己实现的这两个类即可。而 InDiskCookiesStore 里我做了什么呢,就是继承了 CookieStore 接口,实现了用 SharedPreferences 持久化存储 cookies 而已。 这个流程复杂么?不算复杂但是对于新手的确是繁琐了点。这个流程有必要么?我觉得是有的,不然一个网络库凭啥帮你实现具体的持久化存储。 而如果想像其他框架一样简单地一句话调用,网上肯定有很多基于 okhttp 封装的简易库,可以实现一行代码实现,内部原理也跟上面的实现差不多。 所以我觉得,是应用场景与目标不同,不存在优劣与繁琐的问题。 |
32 lwj871731342 2019-08-12 12:25:48 +08:00 SharedPreferences 存一下...对 OkHttp 来说也只是个设置的事吧... |
33 AndroidEngineer 2019-08-12 13:24:56 +08:00 浏览器帮你做的 cookie 操作,客户端你要自己实现,这就是区别 |
34 nnnToTnnn 2019-08-12 13:58:33 +08:00 先不说 okhttp,这个库提供很多方便的地方,其次我觉得你这个问题应该换下,改成:“为什么我的技术这么差” ,你这个功能说实话无非就是 socket 编程,Java 只是重于设计,轻实现的 |
35 madtcsa 2019-08-12 14:18:15 +08:00 Android 设计的很复杂么?没觉得?碎片化的坑倒是多。 |
36 mouyase 2019-08-12 15:29:13 +08:00 via Android 觉得代码复杂那是语言和库的锅 觉得数据存储复杂那是平台的锅 不管怎么样就是复杂那是你的锅 |