更新记录

1.0.0(2026-10-29)

  • 提供 5 个方法:httpListener / startHttp / stopHttp / getIpAddress / sendData
  • 支持 Content-Length 与 chunked 请求体解析,支持多请求并发响应

平台兼容性

uni-app(4.72)

Vue2 Vue2插件版本 Vue3 Vue3插件版本 Chrome Safari app-vue app-vue插件版本 app-nvue app-nvue插件版本 Android Android插件版本 iOS 鸿蒙
√ 1.0.0 √ 1.0.0 × × √ 1.0.0 √ 1.0.0 5.0 1.0.0 × ×
微信小程序 支付宝小程序 抖音小程序 百度小程序 快手小程序 京东小程序 鸿蒙元服务 QQ小程序 飞书小程序 小红书小程序 快应用-华为 快应用-联盟
× × × × - × × × × - × ×

uni-app x(4.72)

Chrome Safari Android Android插件版本 iOS 鸿蒙 微信小程序
× × 5.0 1.0.0 × × ×

插件介绍

安卓局域网 HTTP 服务端 UTS 原生插件。把手机变成一个局域网 HTTP 服务器,浏览器 / Postman / Apipost 等客户端可通过 http://<手机IP>:<端口>/xxx 访问本机接口,接口数据由业务层(UTS)动态返回。

支持 uni-app 与 uni-app x,纯 Kotlin 原生混编实现,不依赖任何三方库。

使用场景

  • 浏览器中的 H5 游戏需要读取机器硬件信息(如打印小票、读取设备状态),由 App 提供 HTTP 接口
  • 局域网内其它设备(打印机、扫码枪、工位机)调用手机上的 HTTP 接口完成业务动作
  • 调试阶段把 App 内部能力以 REST 方式暴露给外部工具

使用流程

  1. 注册监听:httpListener(callback) 注册全局事件监听,所有服务状态与请求事件都会回调到这里(持续回调)。
  2. 开启服务:startHttp({ port, outTime }, callback) 开启 HTTP 服务。
  3. 处理请求:收到请求后(data.status == 'onReceive'),根据 data.uri 分发处理。
  4. 发送数据:sendData(data, callback) 把响应数据回传给请求方;不调用则等待超时(默认 15 秒)后返回空数据。
  5. 关闭服务:stopHttp(callback) 关闭服务。

用法

import {
    httpListener,
    startHttp,
    stopHttp,
    getIpAddress,
    sendData
} from '@/uni_modules/zy-httpServer'

注册监听

httpListener((res) => {
    if (res.code != 0) {
        console.log('错误:' + res.message)
        return
    }
    const data = res.data
    if (data.status == 'onStart') {
        console.log('服务已开启')
    } else if (data.status == 'onStop') {
        console.log('服务已关闭')
    } else if (data.status == 'onReceive') {
        console.log('收到请求:' + data.method + ' ' + data.uri)
        dealRequest(data)
    }
})

开启 / 关闭服务

// 端口缺省 8080,等待响应超时缺省 15000 毫秒
startHttp({ port: 8080, outTime: 15000 }, (res) => {
    if (res.code != 0) {
        console.log('开启失败:' + res.message)
    }
})

stopHttp((res) => {
    if (res.code != 0) {
        console.log('关闭失败:' + res.message)
    }
})

处理请求并返回数据

function dealRequest(data) {
    switch (data.uri) {
        case '/getIpAddress':
            getIpAddress((res) => {
                sendData({ ip: res.data.ip }, () => {})
            })
            break
        case '/hello':
            sendData({ msg: 'hello', time: Date.now() }, () => {})
            break
        default:
            sendData({ error: '无效请求' }, () => {})
    }
}

获取本机 IP

getIpAddress((res) => {
    if (res.code == 0) {
        console.log('本机 IP:' + res.data.ip)
    }
})

插件方法

方法 说明 回调
httpListener(callback) 注册全局事件监听(持续回调) 回调结构同上
startHttp(options, callback) 开启 HTTP 服务,options.port 端口、options.outTime 超时毫秒 成功 data.status == 'onStart'
stopHttp(callback) 关闭 HTTP 服务 成功 data.status == 'onStop'
getIpAddress(callback) 获取本机局域网 IPv4 地址 成功 data.ip 为地址
sendData(data, callback) 向当前等待响应的请求方发送数据 成功 data.status == 'sendSuccess'

回调结果结构

{
    code : 0,        // 0 表示成功,非 0 为错误码
    message : '',    // 错误描述,成功时为空串
    data : {
        status : 'onReceive', // listenerSuccess / onStart / onStop / onReceive / sendSuccess / ip
        uri : '/hello',      // 请求 URI
        method : 'GET',      // 请求方法
        ip : '',             // 本机 IP(status 为 ip 时)
        port : 8080,         // 监听端口(status 为 onStart 时)
        headers : null,      // 请求头(UTSJSONObject)
        cookie : null,       // 请求 Cookie(UTSJSONObject)
        params : null,       // 查询参数(UTSJSONObject,同名参数为数组)
        body : null          // 请求体(UTSJSONObject)
    }
}

HTTP 响应结构

请求方收到的响应为 application/json:

{
    "status": 200,
    "headers": { "User-Agent": "..." },
    "data": { "msg": "hello" }
}
  • status:HTTP 状态码(200 成功,500 内部错误)
  • headers:本次请求的请求头
  • data:sendData 传入的数据;未调用或超时时为 {}

错误码

错误码 说明
9210001 参数错误
9210002 已开启服务
9210003 未开启服务
9210004 启动 HTTP 服务失败(端口被占用等)
9210005 当前没有等待响应的请求
9210006 获取本机 IP 地址失败
9210007 发送数据失败
9210008 操作失败

权限说明

权限 用途
android.permission.INTERNET 监听端口、收发 HTTP 数据
android.permission.ACCESS_WIFI_STATE 读取 WiFi 状态
android.permission.ACCESS_NETWORK_STATE 读取网络状态、获取本机 IP

隐私、权限声明

1. 本插件需要申请的系统权限列表:

android.permission.INTERNET android.permission.ACCESS_WIFI_STATE android.permission.ACCESS_NETWORK_STATE

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

插件仅在本机开启HTTP监听端口,接收到的请求数据不会上传至任何服务器

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

无

暂无用户评论。