import {LogColor, logColor} from "./logger"; export let HookGameCenter = { printReqParam: function (HttpLoggingInterceptor) { HttpLoggingInterceptor.a.overload('okhttp3.Interceptor$Chain').implementation = function (chain) { //获取request的url var request = chain.request(); var url = request.url(); var result = this.a(chain); // 先保存原方法执行的结果 // 获取THREAD_LOGS ThreadLocal对象 var threadLogs = HttpLoggingInterceptor.THREAD_LOGS.value; // 通过get方法获取当前线程保存的JSONObject var threadLogsValue = threadLogs.get(); // 检查并打印THREAD_LOGS的内容 if (threadLogsValue !== null) { logColor('请求url: '+url+'\n参数: ' + threadLogsValue.toString(), LogColor.GREEN_TEXT); } else { console.log('请求参数 is null or not set for the current thread'); } return result; // 返回原方法执行的结果 } }, startHook: function () { // com.framework.net.okhttp3 var HttpLoggingInterceptor = Java.use('com.framework.net.okhttp3.HttpLoggingInterceptor'); HookGameCenter.printReqParam(HttpLoggingInterceptor); HookGameCenter.printResponse(HttpLoggingInterceptor); }, printResponse: function (HttpLoggingInterceptor) { HttpLoggingInterceptor.intercept.overload('okhttp3.Interceptor$Chain').implementation = function (chain) { var result = this.intercept(chain); // 先保存原方法执行的结果 // 预览响应体内容 // 预览响应体内容 try { // 限制预览的最大字节数,避免大数据传输 var responseBody = result.peekBody(1024 * 1024); // 预览最大1MB的数据 var responseBodyString = responseBody.string(); // 将响应体转换为字符串 logColor("Response Body: " + responseBodyString, LogColor.BLUE_TEXT); } catch (e) { console.log("Error reading response body: " + e); } return result; // 返回原方法执行的结果 } } }