java.lang.IllegalStateException: closed 异常分析及解决

覃擎宇2025-02-220

auto.js报错

java.lang.IllegalStateException: closed 异常分析及解决

问题描述

使用http请求数据,进行解析,遇到java.lang.IllegalStateException: closed 异常,错误堆栈如下


16:47:26.049/V: 开始运行[[remote]main.js]
16:47:27.044/E: Wrapped java.lang.IllegalStateException: closed ([remote]main.js#152)
Wrapped java.lang.IllegalStateException: closed
    at httpVerifyCode ([remote]main.js:152:0)
    at [remote]main.js:170:0

16:47:27.045/V: 
 ------------ 
 [ [remote]main.js ]运行结束,用时0.994000

原因

response.body().string()只能引用一次,请求过后,就会关闭,再次调用response.body().string()就会报close异常,应该使用变量进行接收

function httpVerifyCode(){
    let response = http.get('https://www.my12323.oe/a1b9ac7186')
    
    if(response.statusCode == 200){
        let responseStr = response.body.string()
        console.log(response.body.string());
        
        console.log('请求成功返回的响应',responseStr);
        let result = responseStr.match(/\d{4}/g)
        if(!result){
            sleep(1000)
            toast('验证码未获取到正在重新获取')
            httpVerifyCode()
        }else {
            toast(`验证码获取成功:${result[0]}`)
            inputConfig.verifyCode = result[0]
            inputVerifyCode()
        }
    }else{
        // httpVerifyCode()
        console.log('请求失败',response.body);
    }
}

解决

记得使用一个变量进行接收就好了 然后之后使用该变量 进行逻辑运行

let responseStr = response.body.string()

分类:随笔

标签:随笔

下一篇一行命令windows关闭自动更新 - win11亲测

版权声明

本文系作者 @覃擎宇 转载请注明出处,文中若有转载的以及参考文章地址也需注明。\(^o^)/~

Preview