AiWork和autojs可用的同步POST和异步POST请求,使用H5做脚本界面

需求

在使用web开发界面的过程中,需要实现用户登录功能。
登录接口使用phalapi轻量级框架进行开发。

PhalApi是一个开源的PHP轻量级开源接口框架,致力于快速开发接口服务。 支持HTTP/SOAP/RPC等协议,可用于搭建接口/微服务/RESTful接口/Web Services。

file

异步请求

登录接口有同步和异步两种请求方式。
先来看异步的:

function login(username, password) {
    let host = 'https://api.xxx.cn'
    let postData = {
        service: 'App.User.Login',
        username: username,
        password: password,
    }

    // 使用 fetch 发送 POST 请求
    return fetch(host, {
        method: 'POST',
        headers: {
            'Content-Type': 'application/json'
        },
        body: JSON.stringify(postData)
    }).then(response => {
        // 检查响应是否成功
        if (!response.ok) {
            alert('网络响应不是 OK');
        }
        // return response.json(); // 解析 JSON 响应
    }).then(data => {
        if (data['code'] == 200) {
            alert('登录成功');
        } else if (data['message'] || data['msg']) {
            alert(data['message'] || data['msg']);
        } else {
            alert('登录失败:未知错误');
        }
    }).catch(error => {
        // alert('登录失败');
    });
}

异步请求的缺点是封装成函数后没有返回值。所有的登录业务,必须在链式的回调里实现。

同步请求

同步请求方便封装成一个独立的函数供外部调用,推荐使用这种方法

/**
 * 使用同步 XMLHttpRequest 发送登录请求。
 *
 * @param {string} username
 * @param {string} password
 * @returns {boolean}
 * @author 飞云
 * @wechat imfeiyun
 * @link  http://www.feiyunjs.com
 */
function loginSync(username, password) {
    let result
    let host = 'https://api.xxx.cn'
    let credentials = {
        service: 'App.User.Login',
        username: username,
        password: password,
    }

    const xhr = new XMLHttpRequest();
    xhr.open('POST', host, false); // 设置请求为同步(false)
    xhr.setRequestHeader('Content-Type', 'application/json');

    try {
        xhr.send(JSON.stringify(credentials)); // 发送请求
        if (xhr.status === 200) {
            // 请求成功,返回解析的 JSON 数据
            let data = JSON.parse(xhr.responseText);

            if (data['code'] == 200) {
                result = true;
            } else if (data['message'] || data['msg']) {
                alert(data['message'] || data['msg']);
            } else {
                alert(xhr.responseText);
            }
        } else {
            alert(xhr.responseText);  
        }
    } catch (error) {
        alert(error);  
    }
    return result;
}

关联文章

AiWork和autojs使用H5做脚本界面时,处理按钮的重复点击
autox.js结合JsBridge及weui+实现web界面的交互,应用WebView与 HTML开发脚本界面

1. 官方交流QQ群,添加多个不批。建议使用安卓手机或电脑申请。
飞云脚本圈: 586333520飞云脚本圈
Auto.js学习交流③群:286635606
Auto.js学习交流②群:712194666(满员)
IOS免越狱自动化测试群:691997586
2. 盗版,破解有损他人权益和违法作为,请各位会员支持正版。
3. 本站部分资源来源于用户上传和网络搜集,如有侵权请提供版权证明并联系站长删除。
4.如未特别申明,本站的技术性文章均为原创,未经授权,禁止转载/搬运等侵权行为。
5.全站所有付费服务均为虚拟商品,购买后自动发货。售出后概不接受任何理由的退、换。注册即为接受此条款。
6.如果站内内容侵犯了您的权益,请联系站长删除。
飞云脚本 » AiWork和autojs可用的同步POST和异步POST请求,使用H5做脚本界面

企业级大数据智能营销管理系统

了解详情