Java Base64编码解码工具类

需积分: 9 1 下载量 81 浏览量 更新于2024-08-11 收藏 13KB TXT 举报
"微信JSAPI工具包中的JavaBase64库" 微信JSAPI工具包是一个用于处理微信支付和微信JS接口的工具集,其中包含了Base64编码和解码的功能。Base64是一种常见的数据编码方式,常用于将二进制数据转换为可打印的ASCII字符,以便在网络上传输或者在某些不支持二进制数据的环境下使用。 在这个JavaBase64库中,主要提供了一个名为`Base64`的类,该类包含了对字符串和二进制数据进行Base64编码和解码的方法。这个类由Carlo Pelliccia编写,并遵循GNU Lesser General Public License v2.1,允许用户自由地使用、修改和分发代码,但不提供任何保证。 `Base64`类中的方法包括: 1. `encodeString(String input)`:这个方法用于将一个字符串(使用系统默认的字符集编码)编码为Base64格式的字符串。在进行编码前,字符串首先会被转换为字节数组。 2. `decodeString(String input)`:与之相反,这个方法接收一个Base64编码的字符串,并将其解码回原始的字符串形式。同样,解码后会使用系统默认的字符集还原字符串。 3. `encodeBytes(byte[] input)`:此方法用于将字节数组编码为Base64字符串,适合处理二进制数据。 4. `decodeBytes(String input)`:接收一个Base64编码的字符串,然后将其解码回原始的字节数组。 在实际应用中,微信JSAPI可能需要使用这些Base64方法来处理支付相关的签名、加密等操作,确保数据的安全性和完整性。例如,支付请求的参数可能需要进行Base64编码后发送给微信服务器,服务器在验证时会解码并检查内容。同时,对于从服务器返回的响应,也可能是Base64编码的,应用需要解码才能进一步处理。 这个JavaBase64库提供了方便、简洁的方式来处理Base64编码和解码的需求,是微信JSAPI工具包中不可或缺的一部分,能够帮助开发者更高效地集成微信支付功能。在使用时,需要注意字符集的选择,以确保数据在编码和解码过程中的正确性。

import re import json import time import requests import datetime import pymysql import selenium from bs4 import BeautifulSoup from selenium import webdriver from selenium.webdriver.support.ui import WebDriverWait from sqlalchemy import create_engine, Column, Integer, String, Text, DateTime from sqlalchemy.orm import sessionmaker from sqlalchemy.ext.declarative import declarative_base from selenium.webdriver import Edge, EdgeOptions # 创建浏览器对象 options = EdgeOptions() options.use_chromium = True options.binary_location = r'C:\Users\邓枫林\PycharmProjects\pythonProject\edgedriver_win64\msedgedriver.exe' browser = Edge(options=options) wait = WebDriverWait(browser, 10) # 打开微博话题页面 url = 'https://weibo.com/n/%E4%B8%AD%E5%9B%BD%E9%A3%9F%E5%93%81%E5%8D%AB%E7%94%9F?from=feed&loc=at&nick=%E4%B8%AD%E5%9B%BD%E9%A3%9F%E5%93%81%E5%8D%AB%E7%94%9F&order=hot' browser.get(url) # 等待页面加载完成 wait.until(lambda driver: driver.execute_script("return document.readyState") == "complete") browser = selenium.webdriver.Edge(executable_path='C:/Users/邓枫林/PycharmProjects/pythonProject/edgedriver_win64/msedgedriver.exe') wait = selenium.webdriver.support.ui.WebDriverWait(browser, 10) # 监测页面是否包含“高校类”敏感词汇 if '高校类' in browser.page_source: # 获取原始微博 weibo = browser.find_element_by_css_selector('.WB_feed_detail .WB_text.W_f14').text # 获取转发该微博的用户昵称和转发内容 reposts = [] repost_items = browser.find_elements_by_css_selector('.list_ul .list_li') for item in repost_items: nickname = item.find_element_by_css_selector('.WB_text.W_f14').text content = item.find_element_by_css_selector('.WB_text.W_f14 + .comment_txt').text reposts.append({'nickname': nickname, 'content': content}) # 关闭浏览器 browser.quit() # 将微博和转发内容存入MySQL数据库中 Base = declarative_base() class Weibo(Base): __tablename__ = 'weibo_user' id = Column(Integer, primary_key=True) content = Column(Text) create_time = Column(DateTime) class Repost(Base): __tablename__ = 'weibo_repost' id = Column(Integer, primary_key=True) weibo_id = Column(Integer) nickname = Column(String(50)) content = Column(Text) engine = create_engine('mysql+pymysql://root:root@hostname:port/weibo?charset=utf8mb4') Session = sessionmaker(bind=engine) session = Session() now = datetime.datetime.now() weibo_obj = Weibo(content=weibo, create_time=now) session.add(weibo_obj) session.commit() for repost in reposts: repost_obj = Repost(weibo_id=weibo_obj.id, nickname=repost['nickname'], content=repost['content']) session.add(repost_obj) session.commit() session.close() else: # 关闭浏览器 browser.quit()

2023-06-12 上传