如何使用Python连接azurewebsites.net站点API自动下载JSON文件
Python连接Azure Websites下载JSON文件解决方案
原有代码问题说明
- 用了错误的请求地址:你当前填的是Swagger UI的文档网页地址,返回的是HTML内容,自然无法解析为JSON。你需要先在Swagger页面中找到实际返回数据的API接口路径,通常是
/api/xxx类格式,拼接到站点域名后作为真实请求地址。 - 请求头配置错误:你把内容类型标识填到了
Authentication认证头中,application/json属于内容类型参数,应该放在Accept头中,表示你期望接收JSON格式的返回数据。使用requests的auth参数时会自动生成对应Basic认证的Authentication头,无需手动配置。 - 空Cookies配置:如果站点需要登录后才能访问接口,空Cookies会导致身份校验失败,如需携带登录态可以先请求登录接口获取有效Cookies后再调用数据接口。
可运行参考代码
import requests import json # 替换为你从Swagger页面找到的实际API接口地址 API_URL = "https://myplatformconnectiot.azurewebsites.net/api/替换为你的实际接口路径" # 替换为你的站点登录账号密码 USERNAME = "user@example.com" PASSWORD = "你的登录密码" # 配置请求头 headers = { "Accept": "application/json" } try: response = requests.get( url=API_URL, headers=headers, auth=(USERNAME, PASSWORD), timeout=30 ) # 校验请求是否成功,状态码非2xx会直接抛出异常 response.raise_for_status() # 解析为Python字典使用 json_result = response.json() print("JSON数据获取成功") # 保存到本地JSON文件 with open("download_data.json", "w", encoding="utf-8") as f: json.dump(json_result, f, ensure_ascii=False, indent=4) print("JSON文件已保存到当前运行目录") except requests.exceptions.RequestException as e: print(f"请求出错:{e}") # 打印返回内容排查问题 if 'response' in locals(): print(f"服务端返回片段:{response.text[:300]}")
补充注意事项
- 如果你的Azure Web App开启的是Azure AD/OAuth2认证而非Basic Auth,需要先调用Azure认证接口获取Access Token,再在请求头中添加
"Authorization": f"Bearer {你的Access Token}"参数即可。 - 不确定请求参数时可以手动在浏览器触发JSON下载,打开F12网络面板查看真实请求的地址、头、认证方式,1:1复刻参数到Python代码中即可正常请求。
- 如果站点要求携带CSRF Token,需要先请求一次站点页面,从返回的HTML内容或者Cookies中提取CSRF Token,放到请求头后再调用数据接口。
内容的提问来源于stack exchange,提问作者Jessica
相关产品推荐
相关产品推荐

