MUI JS 安卓调用的问题

总结一下,最近在整改APP,把H5的ajax全部换成了安卓的OKHTTP.但是会经常卡死,因为是不同语言,有js 有java,所以没法 debug 看,只能 alter 和debug 混合来,一次无意中发现了一个问题,拿出来一块看看。

下面这段 看起来没问题吧。 

    /**
     * post 异步请求 请求加密,请求的数据在前段已经加好密了
     * @param json
     * @throws JSONException
     */
    private void postFunctionReqjiami(JSONArray json) throws JSONException {
        if(resultMsg.length()>0){
            resultMsg.remove(0);
        }

        JSONArray paramJSONArray= json.getJSONArray(1);
        String url=paramJSONArray.optString(4).trim();

        String paramValues=paramJSONArray.getString(5);

        //String转JSONObject
        JSONObject result = new JSONObject(paramValues);
        //取数据
        String encryptedReq= (String) result.get("encryptedReq");
//        okHttpClient = new OkHttpClient().newBuilder()
//                .connectTimeout(50000, TimeUnit.MILLISECONDS)
//                .readTimeout(50000, TimeUnit.MILLISECONDS)
//                .sslSocketFactory(SSLHelper.getSSLCertifcation(NetConfig.getContextData()), new HttpsUtil.UnSafeTrustManager())
//                .hostnameVerifier(new HttpsUtil.UnSafeHostnameVerifier())//此处设置忽略掉域名校验
//                .build();//创建OkHttpClient对象。
        FormBody.Builder formBody = new FormBody.Builder();//创建表单请求体
        formBody.add("encryptedReq",encryptedReq);//传递键值对参数
        Request request = new Request.Builder()//创建Request 对象。
                .url(url)
                .post(formBody.build())//传递请求体
                .header("User-Agent", "OkHttp Headers.java")
                .addHeader("userId", UserConfig.getUserData())
                .build();
        Call call = okHttpClient.newCall(request);
        call.enqueue(new Callback() {
            @Override
            public void onFailure(Call call, IOException e) {
                if(e instanceof SocketTimeoutException && serversLoadTimes < maxLoadTimes) // 如果超时并未超过指定次数,则重新连接
                {
                    serversLoadTimes++;
                    okHttpClient.newCall(call.request()).enqueue(this);
                }else {
                    e.printStackTrace();
                    JSUtil.execCallback(webview, callbackId, "异常", JSUtil.ERROR, false);
                }
            }

            @Override
            public void onResponse(Call call, Response response) throws IOException {
                resultMsg.put(response.body().string());

                String b=response.message();

                JSUtil.execCallback(webview, callbackId, resultMsg, JSUtil.OK, false);
            }
        });
    }

看这里,,这里我在每次调用这个

resultMsg json数组赋值的时候,都会在方法最开始的地方把它的内容清空,我只让它也只能让它有一个数组元素。但是一次我看到它有两个元素,于是当它把两个元素返回给JS的时候,js认不出来了,最开始的地方
resultMsg.remove(0);

这个方法没有清掉吗???

我只好把

resultMsg.put(response.body().string());
修改成
resultMsg.put(0,response.body().string());
看会不会出现奇怪的问题。

猜你喜欢

转载自blog.csdn.net/liuno0/article/details/109073926
MUI