我想在 APP 登陆,保存一下 cookies,都得实现好几个类。我在 python 和 node.js 都只需要几十行代码。
我用的是 okhttp,是因为这个库本身比较复杂吗?有没有像 python 的 requests 一样轻松简单的库
我想在 APP 登陆,保存一下 cookies,都得实现好几个类。我在 python 和 node.js 都只需要几十行代码。
我用的是 okhttp,是因为这个库本身比较复杂吗?有没有像 python 的 requests 一样轻松简单的库
|
eminemcolaAug 11, 2019
1
首先 OKHTTP 和 Android SDK 无关…
|
|
pdog18Aug 11, 2019
2
okhttp 设置 cookiejar 就好了,然后看你想如何保存,这个需要你来自定义,其实也可以几行代码就好了。
|
|
yinzhiliAug 11, 2019
3
这是因为 java 语言相对比较繁琐
你要去用 ObjectiveC 做 iOS 开发也会发现,复杂度也是高于 py 和 node 的,到时候岂不是要来抱怨 [iOS 设计这么复杂] |
|
iPhoneXIAug 11, 2019 via Android
4
试试 kotlin ?
|
|
rb6221Aug 11, 2019 via iPhone
5
你说的复杂是代码行数吗?
如果是的那怪 java 吧 如果不是的,只能说明你不熟悉客户端开发的理念 |
|
hoyixiAug 11, 2019
6
你说的是一回事吗,Py 和 node 都是服务器端,Android 是客户端
Web 用浏览器登录,浏览器帮你做了不少工作;如果自己实现客户端,维护一些状态、且和服务器保持一致,当然你得自己写代码 |
|
ochatokoriAug 11, 2019 via Android
7
其实你只是觉得 java 干嘛都得搞个类和 pyjs 这些动态语言相比麻烦得不是一点(我就是这样
|
|
wakan190Aug 11, 2019 via Android
8
python 主要面向过程的,会直接些
|
|
HuHuiAug 11, 2019
9
api 实现的粒度更细吧
|
|
AlvaIMAug 11, 2019
10
封装好了的话都不会麻烦, 主要是封装得不行
|
|
locozAug 11, 2019 via Android
11
@eminemcola #1 Python 的 requests 库也是第三方库,也和 Python 标准库无关
|
|
locozAug 11, 2019 via Android
12
复杂不是 Android 的问题,而是 Java 的问题,语言设计者的理念不同导致了 Java 写起来会比 Python 繁琐一些。
|
|
luozicAug 11, 2019 via iPhone
13
Java 自己的坑 ,可以试试 kotlin
|
|
lihongjie0209Aug 11, 2019
14
首先这个和安卓没关系
其次这是设计理念的问题, 脚本语言适合一次性的简短的任务, 当然直接撸最好了. 稍微复杂的一点的任务, 需要多人维护的, 需要扩展性的, 不管是什么语言都需要 OOP 和设计模式那一套. |
|
godlovesxcjtestAug 11, 2019 via Android
15
保存 cookie 有一个 github 项目,一行代码基本上就能搞定
|
|
BBCCBBAug 11, 2019
16
okohttp 只是一个基础库, 你可以用包装了他的库,比如 retrofit 或者 feign.
就想 python 里的 requests 页包装了 urllib3. 如果你用 urllib3 自己撸,也有很多事情要做. |
|
17
没办法,类多一是写的人爽,思路清晰,二是扩展的人爽,只要继承实现,其他的逻辑都不用动,如果只想简单用用就会很不爽,因为你为了一个小功能而付出巨大的时间成本搞清他是怎么实现的
|
|
BuildingAug 12, 2019 via iPhone
18
正如你所说的,你觉得 Python 和 node.js 比较简单,是因为复杂的别人都在库里帮你写好了。
|
|
jinliming2Aug 12, 2019 via iPhone
19
Java 强类型,很多地方限制,所以比较繁琐。
py、js 弱类型,所以相对比较容易实现,把类型推导交给解释器。 语言面向的方向不同而已。 |
|
MMMMMMMMMMMMMMMMAug 12, 2019
20
Java 想要舒服的写代码,要备好一堆 code generator
|
|
wdv2lyAug 12, 2019 via Android
21
拿平台和语言比?那你可以用 py 开发 android,试试复杂度
|
|
jaskleAug 12, 2019 via Android
22
规范意味着复杂,随意意味着简单,怎么能跟一个强类型语言比这个……所以我选择 nodejs
|
|
HenryWAug 12, 2019 via iPhone
23
语言库的实现和使用逻辑跟系统有什么关系…
|
|
pythonnoobAug 12, 2019 via iPhone
24
@jinliming2 python 并不是弱类型,js 才是
|
|
itskingnameAug 12, 2019 via iPhone
25
@jinliming2 纠正一下,Python 是动态强类型语言。
|
|
godowayAug 12, 2019 via Android
26
与其说复杂,不如说为这个库做得这么简单,
|
|
hboliveAug 12, 2019
27
PHP 保存 cookies 只要一句话,PHP 骄傲了吗?
其实吧,也没那么难.jpg |
|
28
|
|
unforgivenAug 12, 2019
29
@luozic 这个和语言都没关系,一个是自己实现一个是 call 别人的 api 当然代码量不一样
|
|
xlogerAug 12, 2019
31
这是封装程度不同的原因。楼主所说的保存 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 封装的简易库,可以实现一行代码实现,内部原理也跟上面的实现差不多。 所以我觉得,是应用场景与目标不同,不存在优劣与繁琐的问题。 |
|
lwj871731342Aug 12, 2019
32
SharedPreferences 存一下...对 OkHttp 来说也只是个设置的事吧...
|
|
AndroidEngineerAug 12, 2019
33
浏览器帮你做的 cookie 操作,客户端你要自己实现,这就是区别
|
|
nnnToTnnnAug 12, 2019
34
先不说 okhttp,这个库提供很多方便的地方,其次我觉得你这个问题应该换下,改成:“为什么我的技术这么差” ,你这个功能说实话无非就是 socket 编程,Java 只是重于设计,轻实现的
|
|
madtcsaAug 12, 2019
35
Android 设计的很复杂么?没觉得?碎片化的坑倒是多。
|
|
mouyaseAug 12, 2019 via Android
36
觉得代码复杂那是语言和库的锅
觉得数据存储复杂那是平台的锅 不管怎么样就是复杂那是你的锅 |