我正在尝试对 OpenWeatherMap 进行 API 调用。当我在终端中执行
flutter run
时,response.statusCode
打印 401
,这是无效 API 密钥的代码,尽管我已经以适当的方式生成了 API 密钥,并且它处于活动状态并正确复制。
const APIKey = '69f9afe03f52ef5c83887fc86dd79d99';
void getData() async {
http.Response response = await http.get(Uri.parse('https://api.openweathermap.org/data/3.0/onecall?lat=$latitude&lon=$longitude&appid=$APIKey'));
if (response.statusCode == 200) {
String data = response.body;
var decodedData = jsonDecode(data);
print(decodedData);
} else {
print(
response.statusCode,
);
}
}
Flutter 的 Geolocator 包用于分配纬度和经度。如何纠正
401
错误?
checkout 使用 OpenWeatherMap API 出现 401 错误 在这里您将找到 apikey 无法工作的一些原因。 另外,密钥激活需要2个小时。
回复可能有点晚了,但您使用的 URL 不再是免费计划的一部分,这就是您收到该错误的原因。尝试使用以下 URL,它需要用户输入城市名称,不需要使用纬度和经度。
https://api.openweathermap.org/data/2.5/weather?q=${*cityName*}&appid=${*API_key*}&units=metric
因此,如果您有一个接受城市名称输入的文本字段,那么上面的 fetch 调用就可以工作。
这里的cityName是用户输入的位置,API_key是分配给您的API密钥。通过 &units=metric,您将获得以摄氏度为单位的温度。如果您想要华氏温度,请使用 &units=imperial 或者如果您想要开尔文温度,只需去掉 &units=公制部分即可。
例如,如果您将以下内容粘贴到浏览器中,您将获得伦敦的天气。
api.openweathermap.org/data/2.5/weather?q=伦敦&APPID=YOUR_API_KEY
希望我在这个平台上的第一个回答可以帮助别人。
对于 openweather 地图,如果您是新用户并且刚刚生成您的 api 密钥,那么需要 45 分钟才能激活您的密钥
前往网站并通过删除之前的 api 密钥来生成新的 api 密钥。
您可以根据需要生成任意数量的 api 密钥。