如何通过Python Requests输出特定HTTP请求参数并获取Discord API返回的message字段
解决你的两个Python Requests相关问题
1. 如何输出特定的HTTP请求参数?
如果你想查看Requests库实际发送的HTTP请求参数(比如最终拼接好的URL、请求头、请求体等),可以通过Request和PreparedRequest对象来实现——它们能帮你看到请求被发送前的最终形态,避免参数编码或拼接出错:
import requests # 定义请求的基础信息 target_url = "https://example.com/api" query_params = {"page": 1, "limit": 10} custom_headers = {"User-Agent": "MyApp/2.0", "Accept": "application/json"} # 创建Request对象 request = requests.Request( method="GET", url=target_url, params=query_params, headers=custom_headers ) # 准备请求(自动处理参数编码、头信息合并等细节) prepared_request = request.prepare() # 输出你关心的特定参数 print(f"最终请求URL: {prepared_request.url}") print(f"请求头信息: {prepared_request.headers}") print(f"请求方法: {prepared_request.method}") # 如果是POST请求,还可以查看请求体内容 # print(f"请求体内容: {prepared_request.body}")
2. 如何获取Discord API返回的错误信息?
你当前的代码直接打印result只会得到响应的状态码,要获取返回的JSON内容里的message字段,需要调用响应对象的.json()方法,将返回的JSON字符串转为Python字典,再提取对应字段。我帮你优化了代码,同时增加了异常处理来应对非JSON格式的响应:
import requests code = input("Enter a code: ") # 用f-string拼接URL更简洁易读,避免字符串拼接出错 api_url = f'https://discord.com/api/v8/entitlements/gift-codes/{code}?with_application=true&with_subscription_plan=true' result = requests.get(api_url) # 分情况处理响应结果 if result.ok: # 状态码在200-399区间视为请求成功 response_data = result.json() print("验证成功!返回数据:", response_data) else: # 尝试解析错误信息的JSON内容 try: error_info = result.json() print(f"错误提示: {error_info.get('message', '未获取到错误信息')}") print(f"错误代码: {error_info.get('code', '无错误代码')}") except ValueError: # 如果返回内容不是JSON格式,就输出状态码和原始文本 print(f"请求失败,状态码: {result.status_code}") print(f"响应内容: {result.text}")
现在运行代码后,当输入无效礼品码时,就会输出Unknown Gift Code这样的具体错误信息了。
内容的提问来源于stack exchange,提问作者user14879042




