76 lines
2.5 KiB
Python
76 lines
2.5 KiB
Python
import json
|
||
import requests
|
||
import time
|
||
from datetime import datetime
|
||
|
||
# 读取JSON文件
|
||
with open('修复.json', 'r', encoding='utf-8') as f:
|
||
patients = json.load(f)
|
||
|
||
# 创建日志文件
|
||
log_filename = f'api_requests_{datetime.now().strftime("%Y%m%d_%H%M%S")}.log'
|
||
success_count = 0
|
||
fail_count = 0
|
||
|
||
def log_result(medical_sn, p_name, success, response):
|
||
global success_count, fail_count
|
||
timestamp = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
|
||
status = "成功" if success else "失败"
|
||
if success:
|
||
success_count += 1
|
||
else:
|
||
fail_count += 1
|
||
|
||
with open(log_filename, 'a', encoding='utf-8') as f:
|
||
f.write(f"[{timestamp}] 体检编号: {medical_sn}, 姓名: {p_name}, 状态: {status}\n")
|
||
f.write(f"响应内容: {json.dumps(response, ensure_ascii=False)}\n")
|
||
f.write("-" * 80 + "\n")
|
||
|
||
# API请求函数
|
||
def request_report(medical_sn, p_name):
|
||
url = f"https://pacs.gw12320.com/adminInspect/admin-api/inspect/patient/generateReport"
|
||
params = {"medicalSn": medical_sn}
|
||
|
||
# 添加请求头,完全匹配Postman的设置
|
||
headers = {
|
||
'Content-Type': 'application/json',
|
||
'User-Agent': 'PostmanRuntime/7.43.3',
|
||
'Accept': '*/*',
|
||
'Accept-Encoding': 'gzip, deflate, br',
|
||
'Connection': 'keep-alive',
|
||
'Host': 'pacs.gw12320.com'
|
||
}
|
||
|
||
try:
|
||
print(f"正在请求 {p_name} 的报告,请等待接口返回...")
|
||
response = requests.get(url, params=params, headers=headers, verify=False)
|
||
response.raise_for_status() # 检查HTTP错误
|
||
result = response.json()
|
||
# 修改成功判断条件:code为0表示成功
|
||
success = result.get("code", -1) == 0
|
||
log_result(medical_sn, p_name, success, result)
|
||
return success
|
||
except Exception as e:
|
||
error_msg = str(e)
|
||
print(f"请求失败: {error_msg}")
|
||
log_result(medical_sn, p_name, False, {"error": error_msg})
|
||
return False
|
||
|
||
# 禁用SSL警告
|
||
import urllib3
|
||
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)
|
||
|
||
# 主处理循环
|
||
print("开始处理请求...")
|
||
for patient in patients:
|
||
medical_sn = patient["medicalSn"]
|
||
p_name = patient["pName"]
|
||
print(f"\n开始处理: {p_name} (体检编号: {medical_sn})")
|
||
|
||
success = request_report(medical_sn, p_name)
|
||
print(f"处理完成: {'成功' if success else '失败'}")
|
||
|
||
print("\n所有请求处理完成!")
|
||
print(f"成功请求数: {success_count}")
|
||
print(f"失败请求数: {fail_count}")
|
||
print(f"详细日志已保存到: {log_filename}") |