You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

调用OpenWeatherMap API多次返回404错误,求问题排查

问题分析与解决方案

嘿,我一眼就瞅到你代码里的问题啦!问题出在URL参数的拼接方式上:

你构造的weburl里用了&来分隔参数,但这是HTML里的转义字符,实际发送HTTP请求时,URL里的参数分隔符应该直接用&。当服务器收到带&的请求时,会把它当作参数名的一部分,自然找不到正确的接口端点,所以每次都返回404错误。

修正后的代码

把URL里的&替换成&就可以解决这个问题啦,修正后的代码如下:

string CityName = "Omsk"; 
string API_KEY = "368e827be4b38db51ff960ca88b5c396"; 
string weburl = "http://api.openweathermap.org/data/2.5/weather?q=" + CityName + "&mode=xml&APPID=" + API_KEY; 
// weburl = "http://api.openweathermap.org/data/2.5/forecast?id=524901&APPID=368e827be4b38db51ff960ca88b5c396"; 
XmlDocument doc = new XmlDocument(); 
var xml = new WebClient().DownloadString(new Uri(weburl)); 
doc.LoadXml(xml); 
foreach(XmlNode node in doc.GetElementsByTagName("*")) 
{ 
    Console.Out.WriteLine(node.Name); 
}

额外建议

  • 可以检查下你的API密钥是否仍然有效,有时候密钥过期或者权限不足也会导致请求失败;
  • 城市名Omsk的拼写是正确的,但如果后续换其他城市,要注意是否符合OpenWeatherMap的命名规范;
  • 如果你是在较新的.NET版本里开发,推荐使用HttpClient代替WebClient,它更高效且支持异步操作,能更好地处理网络请求场景。

内容的提问来源于stack exchange,提问作者владимир зайцев

火山引擎 最新活动