5

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

 1 year ago
source link: https://www.v2ex.com/t/952003
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

V2EX  ›  Android

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

  aaorn1201 · 8 小时 41 分钟前 · 1496 次点击

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

23 条回复    2023-06-27 17:53:51 +08:00
zongren

zongren      8 小时 39 分钟前

android 机器可以部署 http 服务,但是不清楚是不是需要 root
Vegetable

Vegetable      8 小时 35 分钟前

当然可以, 但你列出来的应该都是客户端吧, 处理请求往往需要专门的 server,比如 https://github.com/yanzhenjie/AndServer
qiuwj

qiuwj      8 小时 33 分钟前

只要能监听端口就能提供服务,其他设备进程就能通过 ip+端口和你的服务交互。可以 github 搜下 localsend (局域网文件传输,支持 ios+Android+win+macos )
ysy950803

ysy950803      8 小时 30 分钟前

可以呀,本身就能当成一个微型的 Linux 服务器。
Vegetable

Vegetable      8 小时 22 分钟前

另外, 如果你不是想在现有应用里添加监听,而是单纯的想用手机提供 web 服务,那你最好是用 termux,把手机当 arm 服务器就行了
aaorn1201

aaorn1201      8 小时 9 分钟前

@Vegetable 好的谢谢,看来 okhttp 、retrofit 不行啊,我是不是得把现有 app 代码加上 AndServer ,设计定义好接口。就可以处理来自外部的接口请求了。
dzdh

dzdh      7 小时 56 分钟前

同 wifi 传文件、视频、音乐 访问手机 ip+随机端口 这不就是么
githmb

githmb      7 小时 20 分钟前

这个问题提的,搞得好像 Android 不支持 TCP/IP 协议似的
xiaowowo

xiaowowo      6 小时 26 分钟前

可以是可以,但是大概率锁屏后过一段时间就连接不上了。
TArysiyehua

TArysiyehua      5 小时 39 分钟前

AIDL 不就是把其中一个作为服务器,一个作为客户端吗?虽然不是 http,原理是类似的
flyqie

flyqie      5 小时 31 分钟前 via Android

完全可以,请参考 genymotion pass 。

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

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

flyqie      5 小时 29 分钟前 via Android

@flyqie #11

但 okhttp 、retrofit 等库估计实现不了,他们主要是 client ,你这个需求需要 server 库。
xiangyuecn

xiangyuecn      5 小时 21 分钟前

只要能监听 socket ,都能作服务端,手撸 http
soar0712

soar0712      5 小时 16 分钟前

github 有 nanohttpd 库,自己封装可以实现大部分需求
kiroter

kiroter      5 小时 11 分钟前

有一个啥库来着可以,忘了
flyqie

flyqie      5 小时 3 分钟前 via Android

@soar0712 #14

对,没记错的话 genymotion pass 就是用的这个库。
x77

x77      5 小时 2 分钟前

可以,但是不建议这么做。

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

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

移动端上的“接口服务”多数时候使用 tcp 就可以了(如实现文件分享),不需要支援到 http 等应用层协议,tcp 也可以实现类“接口服务”,只要定义客户端通讯协议就行。
elonmask

elonmask      4 小时 2 分钟前

投屏功能 手表 共享文件 传文件 都是在安卓建一个服务器。
huangsijun17

huangsijun17      3 小时 26 分钟前

@zongren 端口号在 1024 以上不需要 root 。
jaylee4869

jaylee4869      2 小时 42 分钟前

Emby Server 就有 Android 端。
zhanlanhuizhang

zhanlanhuizhang      2 小时 18 分钟前

我的应用就用了这样的功能,断网一样用,用 AndServer ,实现后台所有接口。说真的,自己就是在写一个后台。
lisxour

lisxour      1 小时 55 分钟前

@aaorn1201 你说的这些都是请求工具,首先肯定是可以开服务器的,只不过你要用专门的库,或者自己实现(不太清楚 android sdk 有没有提供直接可以用的 server 组件),当然你可以为了偷懒直接套一个 android 移植版的 Nginx + PHP ,不过这种移植版多多少少会有移植兼容问题。

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK