
比如 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 lavvrence 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 可以的哦 |