国家气象服务API内部服务器错误



尝试使用新的API获取数据时,我仍然会遇到错误500,即使我包括他们要求的用户词字符串:https://forecast-v3.weather.gov/documentation

HttpWebRequest request = (HttpWebRequest)WebRequest.Create("https://api.weather.gov/points/40,-90/forecast/hourly");
request.UserAgent = "WeatherTest/v1.0 (http://www.website.com/; Email@email.com)";
// exception occurs here
using (Stream stream = request.GetResponse().GetResponseStream())
{
    using (StreamReader streamReader = new StreamReader(stream))
    {
        var jsonData = streamReader.ReadToEnd();
    }
}

但是我可以使用相同的URL在浏览器上使用端点:https://api.weather.gov/points/40,-90/forecast/hourly

我还使用了另一个API(Weather Underground)测试了此代码,它起作用,但我的老板希望我改用国家气象服务API。任何帮助都将受到赞赏!

您提供的文档给您一个答案:

内容谈判

API将使用接受标头修改响应返回。有关更多信息,请参见"常见问题"选项卡。参数包括:API的版本,默认为最古老的格式响应,规格中的默认一个示例将是"接受:application/vnd.noaa.dwml xml; version = 1&quort;

add:

request.Headers.Add("Accept", "application/vnd.noaa.dwml+json;version=1");,您将获得JSON响应。

错误500是内部服务器错误 - 这意味着服务器知道它错误并记录下来。

由于您检索数据的方法正在为其他API使用,因此NWS API似乎很可能是故意拒绝服务的。也许它不喜欢您提供的电子邮件字符串,或者依此类推。

当涉及这样的第三方API时,最好的选择是(1)延迟手册,如果存在(例如," RTFM")或(2)进行尝试,并尝试不同的事情,直到您找到有效的东西。

例如,我发现许多服务(包括API)不喜欢我的电子邮件地址之一,以用户nemame@subdomain.domain.com的形式,并且会拒绝服务。我只有实验才能解决这个问题。

最新更新