比如 okhttp 、retrofit 等 http 库能否除了发送请求以外,也能像后端那样响应外部的 REST 接口请求?多谢。
1
zongren 329 天前
android 机器可以部署 http 服务,但是不清楚是不是需要 root
|
2
Vegetable 329 天前
当然可以, 但你列出来的应该都是客户端吧, 处理请求往往需要专门的 server,比如 https://github.com/yanzhenjie/AndServer
|
3
qiuwj 329 天前
只要能监听端口就能提供服务,其他设备进程就能通过 ip+端口和你的服务交互。可以 github 搜下 localsend (局域网文件传输,支持 ios+Android+win+macos )
|
4
ysy950803 329 天前
可以呀,本身就能当成一个微型的 Linux 服务器。
|
5
Vegetable 329 天前
另外, 如果你不是想在现有应用里添加监听,而是单纯的想用手机提供 web 服务,那你最好是用 termux,把手机当 arm 服务器就行了
|
6
aaorn1201 OP @Vegetable 好的谢谢,看来 okhttp 、retrofit 不行啊,我是不是得把现有 app 代码加上 AndServer ,设计定义好接口。就可以处理来自外部的接口请求了。
|
7
dzdh 329 天前
同 wifi 传文件、视频、音乐 访问手机 ip+随机端口 这不就是么
|
8
githmb 329 天前
这个问题提的,搞得好像 Android 不支持 TCP/IP 协议似的
|
9
xiaowowo 329 天前
可以是可以,但是大概率锁屏后过一段时间就连接不上了。
|
10
TArysiyehua 329 天前
AIDL 不就是把其中一个作为服务器,一个作为客户端吗?虽然不是 http,原理是类似的
|
11
flyqie 329 天前 via Android
完全可以,请参考 genymotion pass 。
genymotion pass 本身就是一个纯粹的 android 系统,不存在任何的额外虚拟化层。 你看到的 webui 和 api 都是他们写的 android app 提供的服务,没记错的话用的是 java 。 |
13
xiangyuecn 329 天前
只要能监听 socket ,都能作服务端,手撸 http
|
14
soar0712 329 天前
github 有 nanohttpd 库,自己封装可以实现大部分需求
|
15
kiroter 329 天前
有一个啥库来着可以,忘了
|
17
x77 329 天前
可以,但是不建议这么做。
http 库基本都区分服务端和客户端。okhttp 、retrofit 等都是客户端(主动方,发起请求的那边),没特别要求的话 java 自己也有 http 客户端。 实现“REST 接口服务”你需要 http 服务器库,早期 apache 提供过后来好像和 google 有争议就停掉了(记得不是很清楚),后来用的比较多的有 nanohttp ,不过这个好像也停更了,总之 http 服务器这类库没客户端多,因为移动端本身就不适合做 http 服务器。功耗、隐私等维度都和移动设备的理念背道而驰。 移动端上的“接口服务”多数时候使用 tcp 就可以了(如实现文件分享),不需要支援到 http 等应用层协议,tcp 也可以实现类“接口服务”,只要定义客户端通讯协议就行。 |
18
Bown 329 天前
可以试试 https://ktor.io/
|
19
elonmask 329 天前
投屏功能 手表 共享文件 传文件 都是在安卓建一个服务器。
|
20
huangsijun17 329 天前
@zongren 端口号在 1024 以上不需要 root 。
|
21
jaylee4869 329 天前
Emby Server 就有 Android 端。
|
22
zhanlanhuizhang 329 天前
我的应用就用了这样的功能,断网一样用,用 AndServer ,实现后台所有接口。说真的,自己就是在写一个后台。
|
23
lisxour 329 天前
@aaorn1201 你说的这些都是请求工具,首先肯定是可以开服务器的,只不过你要用专门的库,或者自己实现(不太清楚 android sdk 有没有提供直接可以用的 server 组件),当然你可以为了偷懒直接套一个 android 移植版的 Nginx + PHP ,不过这种移植版多多少少会有移植兼容问题。
|
24
azusematsuri 329 天前 via Android
端口可能要 root 可能会冲突,本地程序间通信可能监听 socket 文件更好
|
25
mmdsun 328 天前
当然可以安卓都上能跑 linux 系统,我一个安卓旧手机都能跑 web api,现在就服务器在用。
https://termux.dev/cn/index.h 如果你说像在 android 应用开发的 API 就不知道了,Java 一直是有 http serve 的 https://openjdk.org/jeps/408 |
26
TinyBad 328 天前
完全可行,但是我没记错的话,80 端口好像是要 root 的
|
27
rev1si0n 328 天前
可以的哦
|