import requests
from requests import Response
from typing import List, TypeVar, Dict, Any, Optional
import logging

# 设置日志
logging.basicConfig(level=logging.INFO)
logger = logging.getLogger(__name__)

T = TypeVar('T')  # 泛型类型声明

REQUEST_URL = "http://aijinan.biaofun.com.cn/app/query/shandong"  # 替换为实际API地址

def main():
    cities = ["济南市", "青岛市", "临沂市", "菏泽市", "威海市", "东营市"]
    
    # 修正：每次请求创建新的参数对象，避免累积
    for city in cities:
        params = {"city": city}
        
        # 发起RPC请求
        response_list = rpc_get(REQUEST_URL, params, False)
        
        # 处理响应
        if not response_list:
            logger.warning(f"Empty response for city: {city}")
            continue
            
        # 设置城市名称并处理后续逻辑 (根据实际Response类调整)
        response_list[0]['name'] = city  # 这里假定response_list是字典列表
        after(response_list)
        
def rpc_get(url: str, params: Dict[str, Any], right_or_wrong: bool) -> Optional[List[T]]:
    """
    RPC请求封装
    :param url: 请求URL
    :param params: 请求参数
    :param right_or_wrong: 未使用的标志（保留原Java参数）
    :return: 响应对象列表
    """
    logger.info(f"Request URL: {url}")
    
    try:
        # 发起POST请求
        response: Response = requests.post(url, data=params)
        
        # 检查响应状态
        if response.status_code != 200:
            logger.error(f"Request failed, Status Code: {response.status_code}, URL: {url}")
            return None
            
        response_text = response.text
        logger.debug(f"Response: {response_text}")
        
        # 解析响应（需要根据实际API响应格式实现）
        return parse_response(response_text)
        
    except Exception as e:
        logger.exception(f"RPC request failed: {str(e)}")
        return None

def parse_response(response_text: str) -> List[T]:
    """
    解析API响应 (需要根据实际API响应格式实现)
    示例实现 - 替换为实际解析逻辑
    """
    # 这里需要根据实际API返回格式实现解析
    # 示例：解析为JSON对象
    import json
    try:
        data = json.loads(response_text)
        # 根据实际数据结构返回列表
        return [data] if isinstance(data, dict) else data
    except json.JSONDecodeError:
        logger.error("Invalid JSON response")
        return []

def after(response_list: List[Any]):
    """
    后续处理逻辑 (根据实际需求实现)
    """
    # 示例实现
    print(f"Processing response for: {response_list[0].get('name')}")
    # 实际业务逻辑...

if __name__ == "__main__":
    main()