请问 android 是否可以像后端一样处理接口请求?

2023-06-27 11:07:44 +08:00
 aaorn1201

比如 okhttp 、retrofit 等 http 库能否除了发送请求以外,也能像后端那样响应外部的 REST 接口请求?多谢。

9565 次点击
所在节点    Android
27 条回复
zongren
2023-06-27 11:09:47 +08:00
android 机器可以部署 http 服务,但是不清楚是不是需要 root
Vegetable
2023-06-27 11:14:20 +08:00
当然可以, 但你列出来的应该都是客户端吧, 处理请求往往需要专门的 server,比如 https://github.com/yanzhenjie/AndServer
qiuwj
2023-06-27 11:16:12 +08:00
只要能监听端口就能提供服务,其他设备进程就能通过 ip+端口和你的服务交互。可以 github 搜下 localsend (局域网文件传输,支持 ios+Android+win+macos )
ysy950803
2023-06-27 11:18:47 +08:00
可以呀,本身就能当成一个微型的 Linux 服务器。
Vegetable
2023-06-27 11:27:05 +08:00
另外, 如果你不是想在现有应用里添加监听,而是单纯的想用手机提供 web 服务,那你最好是用 termux,把手机当 arm 服务器就行了
aaorn1201
2023-06-27 11:40:17 +08:00
@Vegetable 好的谢谢,看来 okhttp 、retrofit 不行啊,我是不是得把现有 app 代码加上 AndServer ,设计定义好接口。就可以处理来自外部的接口请求了。
dzdh
2023-06-27 11:53:13 +08:00
同 wifi 传文件、视频、音乐 访问手机 ip+随机端口 这不就是么
githmb
2023-06-27 12:28:43 +08:00
这个问题提的,搞得好像 Android 不支持 TCP/IP 协议似的
xiaowowo
2023-06-27 13:23:01 +08:00
可以是可以,但是大概率锁屏后过一段时间就连接不上了。
TArysiyehua
2023-06-27 14:10:33 +08:00
AIDL 不就是把其中一个作为服务器,一个作为客户端吗?虽然不是 http,原理是类似的
flyqie
2023-06-27 14:18:34 +08:00
完全可以,请参考 genymotion pass 。

genymotion pass 本身就是一个纯粹的 android 系统,不存在任何的额外虚拟化层。

你看到的 webui 和 api 都是他们写的 android app 提供的服务,没记错的话用的是 java 。
flyqie
2023-06-27 14:20:28 +08:00
@flyqie #11

但 okhttp 、retrofit 等库估计实现不了,他们主要是 client ,你这个需求需要 server 库。
xiangyuecn
2023-06-27 14:28:32 +08:00
只要能监听 socket ,都能作服务端,手撸 http
soar0712
2023-06-27 14:32:46 +08:00
github 有 nanohttpd 库,自己封装可以实现大部分需求
kiroter
2023-06-27 14:38:21 +08:00
有一个啥库来着可以,忘了
flyqie
2023-06-27 14:45:50 +08:00
@soar0712 #14

对,没记错的话 genymotion pass 就是用的这个库。
x77
2023-06-27 14:47:01 +08:00
可以,但是不建议这么做。

http 库基本都区分服务端和客户端。okhttp 、retrofit 等都是客户端(主动方,发起请求的那边),没特别要求的话 java 自己也有 http 客户端。

实现“REST 接口服务”你需要 http 服务器库,早期 apache 提供过后来好像和 google 有争议就停掉了(记得不是很清楚),后来用的比较多的有 nanohttp ,不过这个好像也停更了,总之 http 服务器这类库没客户端多,因为移动端本身就不适合做 http 服务器。功耗、隐私等维度都和移动设备的理念背道而驰。

移动端上的“接口服务”多数时候使用 tcp 就可以了(如实现文件分享),不需要支援到 http 等应用层协议,tcp 也可以实现类“接口服务”,只要定义客户端通讯协议就行。
Bown
2023-06-27 15:06:28 +08:00
可以试试 https://ktor.io/
elonmask
2023-06-27 15:47:12 +08:00
投屏功能 手表 共享文件 传文件 都是在安卓建一个服务器。
huangsijun17
2023-06-27 16:22:45 +08:00
@zongren 端口号在 1024 以上不需要 root 。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/952003

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX