php中文网

API返回空值且requests库无报错,如何排查故障?

php中文网

无法获取 api 返回数据的排除故障

根据提供的代码,我们尝试分析导致无法获得 api 返回数据的可能原因。

问题复现

原代码尝试通过 post 请求获取 ip 查询 api 的返回数据,但遇到以下问题:

  • api 返回空值。
  • requests 库没有报错。

原因分析

经过仔细检查,我们发现原始代码中存在一个拼写错误:

fields=58898?lang=zh_cn"  # 拼写错误

正确拼写应该是:

fields=58898&lang=zh_cn"

修改后的代码

以下是修改后的代码:

import random
import requests
import json

ip = [
    "49.104.25.257",
    "39.115.131.116"
]

api = "http://ip-api.com/batch?fields=58898&lang=zh_CN"  # 更正拼写
headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36 Edg/119.0.0.0",
    "content-type": "application/json"
}

ip = json.dumps(ip, ensure_ascii=False, indent=2)
print(ip)

resp = requests.post(url=api, data=ip, headers=headers)
print(resp.status_code)
print(resp.text)

resp.close()

效果验证

运行修改后的代码后,api 返回数据将能够成功获取。

以上就是API返回空值且requests库无报错,如何排查故障?的详细内容,更多请关注php中文网其它相关文章!