更新记录

1.0.1(2024-08-12)

  1. 增加cookie支持

1.0.0(2024-08-09)

  1. get/post等多种请求方式都支持下载文件
  2. 支持多文件上传/下载
  3. 私有自定义证书校验
  4. 支持get/post/put/delete/connect/head/options/patch/query/trace等多种请求方式

平台兼容性

HbuilderX/cli最低兼容版本
3.6.8

uni-app

Vue2 Vue3
?
app-vue app-nvue app-android app-ios app-harmony
? ? ? ? ?
H5-Safari Android Browser 微信浏览器(Android) QQ浏览器(Android) Chrome IE Edge Firefox PC-Safari
? ? ? ? ? ? ? ? ?
微信小程序 支付宝小程序 百度小程序 字节小程序 QQ小程序 钉钉小程序 快手小程序 飞书小程序 京东小程序
? ? ? ? ? ? ? ? ?
快应用-华为 快应用-联盟
? ?

uni-app x

app-android app-ios
? ?
H5-Safari Android Browser 微信浏览器(Android) QQ浏览器(Android) Chrome IE Edge Firefox PC-Safari
? ? ? ? ? ? ? ? ?

网络请求getpost等下载文件,私有证书校验

优势:

  1. get/post等多种请求方式都支持下载文件
  2. 支持多文件上传/下载
  3. 私有自定义证书校验
  4. 支持get/post/put/delete/connect/head/options/patch/query/trace等多种请求方式

快速接入

  1. 拷贝demo示例里的AndroidManifest.xml到项目根目录
  2. 集成插件步骤请参考https://www.cnblogs.com/wenrisheng/p/18323027

接口


import {
    UTSNetwork
} from "@/uni_modules/wrs-uts-network"
  • 接口请求

let params = {}
params.url = "https://wwww.xxx/aaa/aaa"
params.method = "GET"
params.data = {account:"pwd",pwd: "121", home: ["111"]}
params.header = {
    "Authorization": "Bearer 7b898771-d086-4c46-b7d9-1ece9f6a6199"
}
params.timeout = 5
params.connectTimeout = 2
params.readTimeout = 5
params.writeTimeout = 5
params.dataType = "json"
params.ignoreHttpsVerify = true
let completeHandle = (resp) => {
    // 返回的数据,Object/String/ArrayBuffer
    let data = resp.data
    if(data) { // 接口请求成功
        // 响应头
        let header = resp.header
        //  HTTP 状态码
        let statusCode = resp.statusCode
    } else {  // 接口请求失败
        let error = resp.error
    }
    this.showMsg("resp:" + JSON.stringify(resp))
}
UTSNetwork.request(params, completeHandle)

params属性字段:

  • url string类型,接口地址

  • method string类型,请求方法,支持GET、POST、DELETE、OPTIONS、PUT、PATCH、HEAD、QUERY、CONNECT、TRACE

  • data object/Array类型,参数,可选,可以是对象或数组

  • header object类型,请求头,可选

  • timeout 超时时间,可选,仅支持iOS

  • connectTimeout 连接超时时间,仅支持Android

  • readTimeout 读数据超时时间,可选,仅支持Android

  • writeTimeout 写数据超时时间,可选,仅支持Android

  • dataType string类型,如果设为 json,会对返回的数据进行一次 JSON.parse,非json不会进行 JSON.parse,可选

  • ignoreHttpsVerify boolean类型,是否忽略Https证书校验,一般用于私有证书,可选,

  • cookies array类型,请求数据的cookie,响应数据的cookie从响应头的Set-Cookie里面获取,如:


params.cookies = [
    {
        name: "account",
        value: "wrs",
        domain: "172.16.11.23",
        path: "/"
    }
]
  • httpsCer objcet类型,https证书校验,支持cer证书文件或证书字符串,一般用于私有证书,可选

证书获取方式: 用Chrome浏览器打开连接,点击地址栏左边的"不安全"按钮弹出证书信息,点击无效证书->详细信息->导出,一般导出的都是pem格式,使用命令


openssl x509 -in cer.pem -inform PEM -out cer.cer -outform DER

将pem格式转换成cer格式,接口参数使用cer格式的证书,将pem格式的证书使用HBuilderX打开即可获取证书字符串内容

如:


// 第一种:证书文件
params.httpsCer = {
    type: "file", // 文件类型,value值是cer证书的绝对地址
    value: plus.io.convertLocalFileSystemURL("_www/static/cer.cer")
}

// 第二种:证书字符串
params.httpsCer = {
                    type: "string", // 字符串类型,value值是cer证书字符串
                    value: `-----BEGIN CERTIFICATE-----
MIIDazCCAlOgAwIBAgIUHnAowRXnRNGbDV/PRnfx52tPObkwDQYJKoZIhvcNAQEL
BQAwRTELMAkGA1UEBhMCQVUxEzARBgNVBAgMClNvbWUtU3RhdGUxITAfBgNVBAoM
GEludGVybmV0IFdpZGdpdHMgUHR5IEx0ZDAeFw0yNDA4MDgwMjQ5MDVaFw0yNTA4
MDgwMjQ5MDVaMEUxCzAJBgNVBAYTAkFVMRMwEQYDVQQIDApTb21lLVN0YXRlMSEw
HwYDVQQKDBhJbnRlcm5ldCBXaWRnaXRzIFB0eSBMdGQwggEiMA0GCSqGSIb3DQEB
AQUAA4IBDwAwggEKAoIBAQCwXACiypYBZEZp5gWR1mk3Bt9cu9g5XO8nJNo//Cl0
Ci6CDN3tpK6j7uoQb/RtrzHESO2POXFglBtE9ST6zsBA+O5582yhrr4YpMhHtIxk
tk12hiHL6y8Z1OQTgrKFSrx9g84HSasJEPjALxgMOzRQP8DtFwGqHEoRB3KpX5f/
ZzADojhMznPEpkUOYV+WdiQw4s0GL4UZOgOGYkf8vI38r9afTellpI+t6m7+fpQy
6fbcnMeppFCYhwxilN6l0wxjStz4r2X4Aw9EVsdyw9QBYbyGIVkHkcPRqrVOXmRz
yh/+TozrpZyxkYIc9nE2AUQ1yPNe2LbNiViQa/AJhYvpAgMBAAGjUzBRMB0GA1Ud
DgQWBBRgyKsycZ/V96snUIfptYE1/ekuozAfBgNVHSMEGDAWgBRgyKsycZ/V96sn
UIfptYE1/ekuozAPBgNVHRMBAf8EBTADAQH/MA0GCSqGSIb3DQEBCwUAA4IBAQA8
8as8JjVcMr8RmgPco4MZ4PrORbhpaChiuGrkXyN5cNcLgHjH/+Le5A/f6b9MKuHQ
dKBoSyqpJy/Ef6AM4Bvdr0aSUDesHjdLkEu6VfAFYdAZnCNqq09xR6zADtnC+KvE
Lxm3U5bfIiLFkVrckJi3EJkuNf1Acq/M/QDyJ3dByaJpqoiXwhCcJeF1vGYy4NRp
HVH4QrvJxLhnBSuyLXb9QfyUzTbrlsYIZjWgyn3uG8uR94WnezEMhjYOTjsCyv2v
2NcjE1zv6BdrM3PBEIMHE+PRgER7itnYMhkRSuZayKdGqYfuuH6qmmFOGckvzclQ
voqmSl76Z8CHZCdFWkt5
-----END CERTIFICATE-----`
}
  • 下载文件 主要参数有params.fileDir、params.fileName、progressHandle,其他参数参考UTSNetwork.request()接口

let params = {}
params.url = this.host + "/download"
params.method = "GET"
params.data = {"isAll":false,"ids":["111"],"needText":true}
params.header = {
    "Authorization": "Bearer 7b898771-d086-4c46-b7d9-1ece9f6a6199"
}
params.timeout = 5
// 设置下载文件保存路径,可选,不传的话或保存到app的零时缓存目录里,一般都建议传保存路径
params.fileDir = plus.io.convertLocalFileSystemURL("_download/file")
// 下载文件名称,可选,不传的话会从响应头的Content-Disposition里获取或者从url里获取
params.fileName = "aa.txt"
let progressHandle = (progess) => {
    console.log("progess:" + progess)
}
let completeHandle = (resp) => {
    console.log("resp:" + JSON.stringify(resp))
    let tempFilePath = resp.tempFilePath
    if (tempFilePath) {
        this.showMsg("下载成功:" + tempFilePath)
    } else {
        this.showMsg("下载失败")
    }
}
UTSNetwork.downloadFile(params, progressHandle, completeHandle)
  • 上传文件 主要参数有params.files、params.fileName、progressHandle,其他参数参考UTSNetwork.request()接口

let params = {}
params.url = this.host + "/upload"
params.method = "POST"
params.files = [ // 多文件同时上传
    {
        name: "file",
        uri: plus.io.convertLocalFileSystemURL("_www/static/logo.png")
    }
]

// 单文件上传
params.name = "file"
params.filePath = plus.io.convertLocalFileSystemURL("_www/static/logo.png")

// 其他参数
params.formData = {"name":"wrs"} 
params.header = {
    "Authorization": "Bearer 7b898771-d086-4c46-b7d9-1ece9f6a6199"
}
params.timeout = 5
let progressHandle = (progess) => {
    console.log("progess:" + progess)
}
let completeHandle = (resp) => {
    console.log("resp:" + JSON.stringify(resp))
}
UTSNetwork.uploadFile(params, progressHandle, completeHandle)

隐私、权限声明

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

网络请求、读写

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

插件不采集任何数据

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

使用中有什么不明白的地方,就向插件作者提问吧~ 我要提问