首页 > 编程语言 >Java 批量检测微信小程序封禁状态

Java 批量检测微信小程序封禁状态

时间:2025-01-18 18:28:58浏览次数:3  
标签:封禁 Java String 微信 App 程序 接口 appId ID

在这里插入图片描述

项目代码

import java.io.InputStreamReader;
import java.io.BufferedReader;
import java.net.HttpURLConnection;
import java.net.URL;
import org.json.JSONObject;

public class MiniProgramStatusChecker {

    // 要检查的小程序 App ID 列表
    private static String[] appIds = {"appid1", "appid2", "appid3"}; // 请替换为实际的 App ID

    // 定义 API URL 模板
    private static String apiUrlTemplate = "https://down.ychengsnsm.com/xcx/checkxcx.php?appid=%s";

    // 发送 HTTP 请求并获取响应
    public static JSONObject getAppStatus(String appId) {
        try {
            String apiUrl = String.format(apiUrlTemplate, appId);
            HttpURLConnection connection = (HttpURLConnection) new URL(apiUrl).openConnection();
            connection.setRequestMethod("GET");
            connection.setConnectTimeout(30000); // 设置超时(毫秒)
            connection.setReadTimeout(30000); // 设置读取超时(毫秒)

            // 获取响应
            BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream()));
            StringBuilder responseBuilder = new StringBuilder();
            String line;
            while ((line = reader.readLine()) != null) {
                responseBuilder.append(line);
            }
            reader.close();

            // 解析响应
            return new JSONObject(responseBuilder.toString());

        } catch (Exception e) {
            System.out.println("请求失败: " + e.getMessage());
            return null;
        }
    }

    // 批量检查每个小程序的状态
    public static void checkMiniProgramStatus() {
        for (String appId : appIds) {
            JSONObject responseData = getAppStatus(appId);

            if (responseData != null) {
                if (responseData.has("code")) {
                    int code = responseData.getInt("code");
                    switch (code) {
                        case 1:
                            System.out.println(appId + ": 小程序状态正常");
                            break;
                        case 0:
                            System.out.println(appId + ": 小程序已被封禁");
                            break;
                        default:
                            System.out.println(appId + ": 接口返回了未知的状态码 (" + code + ")");
                            break;
                    }
                } else {
                    System.out.println(appId + ": 接口返回的数据格式不符合预期");
                }
            } else {
                System.out.println(appId + ": 请求失败");
            }
        }
    }

    public static void main(String[] args) {
        checkMiniProgramStatus();
    }
}

代码说明

  1. API URL 模板

    • 代码中的 apiUrlTemplate 是一个包含占位符的 API 地址,用于通过 App ID 查询小程序的封禁状态。通过 String.format() 函数将实际的小程序 App ID 填入 URL 中,形成完整的请求地址。
  2. HTTP 请求函数

    • getAppStatus(String appId) 函数用于发送 HTTP GET 请求,并返回响应的 JSON 数据。
    • 使用 HttpURLConnection 进行网络请求,通过 BufferedReader 获取返回的内容,并通过 JSONObject 解析响应数据。
  3. 批量检测小程序状态

    • checkMiniProgramStatus() 方法遍历所有小程序的 App ID,调用 getAppStatus() 方法获取每个小程序的状态。
    • 根据返回的 code 字段判断小程序的封禁状态:
      • 1 表示小程序状态正常。
      • 0 表示小程序已被封禁。
      • 其他值表示接口返回了未知的状态码。
  4. 错误处理

    • 在进行 HTTP 请求时,如果发生网络错误或请求超时,异常信息会被捕获并输出。
    • 如果接口返回的数据格式不是预期的 JSON 格式,代码会输出错误提示。

使用说明

  1. 设置要检查的小程序 App ID

    • 在代码中,appIds 数组包含了需要检查的小程序 App ID 列表。你需要将此数组中的 appid1, appid2, appid3 替换为实际的小程序 ID。例如:
    appIds = new String[]{"wx1234567890abcdef", "wxabcdef1234567890"};
    

    你可以根据需要添加更多的小程序 App ID。

  2. 上传并运行 Java 程序

    • 将修改后的 Java 文件上传至你的服务器,确保你的服务器支持 Java 环境。
    • 使用命令行编译并运行该 Java 文件。例如:
    javac MiniProgramStatusChecker.java
    java MiniProgramStatusChecker
    
  3. 查看结果

    • 当程序运行时,它会检查每个小程序的封禁状态,并在控制台输出相应的结果。例如:
    wx1234567890abcdef: 小程序状态正常
    wxabcdef1234567890: 小程序已被封禁
    
  4. 常见错误及解决方案

    • HTTP 错误:如果遇到 HTTP 错误,可能是网络连接问题或接口不可用。请检查 API 地址是否正确,并确保服务器可以访问外部网络。
    • 无效的 JSON 响应:如果接口返回的数据格式不正确,可能是接口本身的问题。你可以检查接口是否有变化,或联系提供方确认接口的返回格式。

标签:封禁,Java,String,微信,App,程序,接口,appId,ID
From: https://blog.csdn.net/y131673/article/details/145108115

相关文章

  • [2025.1.18 JavaSE学习]标准I/O流 && 转换流
    标准I/O流System.in:标准输入默认设备:键盘类型:InputStreamSystem.out:标准输出默认设备:显示器类型:PrintStreamSystem.in编译类型为InputStream,而运行类型为BufferedInputStreampublicfinalstaticInputStreamin=null;System.out编译类型为PrintStream,运行类......
  • Java基础
    注释种类单行注释//内容多行注释/*内容*/文档注释/**内容*/写注释是很好的习惯!!!标识符注意点以字母/美元/_为开头标识符是大小写敏感的,所以一定要注意类名no中文,标识符no拼音数据类型强类型语言:变量的使用要严格符合规定,所有变量必须先定义才能使用......
  • java面向对象与异常
    面向对象初识面向对象方法回顾和加深对象的创建和分析面向对象的三大特性抽象类和接口内部类和oop实战初识面向对象面向过程&面向对象:类=属性+方法对于描述复杂的事物,为了从宏观上把握,从整体上合理分析,我们需要使用面向对象的思路来分析整个系统。但是,具体到微......
  • 你不知道的javascript-14(Symbol,map,set)
    1.Symbol(生成唯一标识符)Symbol是JavaScript中的一种基本数据类型,它表示唯一的、不可变的值。以下是关于Symbol的详细说明:constsym1=Symbol();constsym2=Symbol("description");使用Symbol()函数可以创建一个新的Symbol。每个Symbol都是唯一的,即使它们的......
  • 【Java毕设项目】基于SpringBoot的医护人员排班系统
    【Java毕设项目】基于SpringBoot的医护人员排班系统springboot002-基于springboot的医护人员排班系统文章目录【Java毕设项目】基于SpringBoot的医护人员排班系统一、内容包括二、需求分析三、运行环境四、功能模块五、效果图展示六、获取源码一、内容包括包括有......
  • 你不知道的javascript-13(var的接替者let与const)
    1.let与const的基本使用在ES5中我们声明变量都是使用的var(variable)关键字,从ES6开始新增了两个关键字可以声明变量:let、constlet、const在其他编程语言中都是有的,所以也并不是新鲜的关键字但是let、const确确实实给JavaScript带来一些不一样的东西从使用角度来说,只是在原......
  • Java面试题汇总-集合篇+JUC篇
    其他面试题Java面试题汇总-Java基础篇(共50道题)-CSDN博客Java集合目录1.请你说说java中hashmap的原理2.HashMap的put(key,value)和get(key)过程3.在使用hashmap时,有哪些提升性能的技巧?4.什么是哈希碰撞?怎么解决哈希碰撞?5.谈一谈hashmap的扩容操作?6.hashmap的初始容量......
  • leetcode——分割两个字符串得到一个回文字符串(java)
    给你两个字符串a和b,它们长度相同。请你选择一个下标,将两个字符串都在相同的下标分割开。由a可以得到两个字符串:aprefix和asuffix,满足a=aprefix+asuffix,同理,由b可以得到两个字符串bprefix和bsuffix,满足b=bprefix+bsuffix。请你判断aprefix+bsu......
  • java流程控制及其循环语句
    用户交互Scanner(IO流跟电脑打交道)基础语法:Scanners=newScanner(System.in);//表示系统数据输入​Scanners=newScanner(System.out);//表示系统数据输出​scanner.close:表示关闭数据流通过Scanner类的n......
  • 科普文:算法和数据结构系列【高效的字符串检索结构:字典树Trie树原理、应用及其java示例
    概叙科普文:算法和数据结构系列【算法和数据结构概叙】-CSDN博客科普文:算法和数据结构系列【非线性数据结构:树Tree和堆Heap的原理、应用、以及java实现】-CSDN博客科普文:算法和数据结构系列【树:4叉树、N叉树】_动态维护四叉树-CSDN博客科普文:算法和数据结构系列【二叉树总结......