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