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

316 天前
 aaorn1201

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

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

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

你看到的 webui 和 api 都是他们写的 android app 提供的服务,没记错的话用的是 java 。
flyqie
316 天前
@flyqie #11

但 okhttp 、retrofit 等库估计实现不了,他们主要是 client ,你这个需求需要 server 库。
xiangyuecn
316 天前
只要能监听 socket ,都能作服务端,手撸 http
soar0712
316 天前
github 有 nanohttpd 库,自己封装可以实现大部分需求
kiroter
316 天前
有一个啥库来着可以,忘了
flyqie
316 天前
@soar0712 #14

对,没记错的话 genymotion pass 就是用的这个库。
x77
316 天前
可以,但是不建议这么做。

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

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

移动端上的“接口服务”多数时候使用 tcp 就可以了(如实现文件分享),不需要支援到 http 等应用层协议,tcp 也可以实现类“接口服务”,只要定义客户端通讯协议就行。
Bown
316 天前
可以试试 https://ktor.io/
elonmask
316 天前
投屏功能 手表 共享文件 传文件 都是在安卓建一个服务器。
huangsijun17
316 天前
@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