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

时间:2017-12-06 23:15:32

标签: c# weather-api

尝试使用新API获取数据时,我一直收到错误500,即使我包含他们请求的UserAgent字符串: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();
    }
}

但我可以使用相同的网址https://api.weather.gov/points/40,-90/forecast/hourly

在浏览器上使用端点

我还用另一个API(Weather Underground)测试了这段代码并且它可以工作,但我的老板要我使用国家气象服务API。任何帮助表示赞赏!

2 个答案:

答案 0 :(得分:3)

您提供的文档为您提供了答案:

  

内容谈判

     

API将使用Accept标头来修改   回复了。有关详细信息,请参阅FAQ选项卡。参数   include:API的版本,默认为最旧的格式   响应,规范中的默认值Accept头的示例   将是“Accept:application / vnd.noaa.dwml + xml; version = 1”

添加:

request.Headers.Add("Accept", "application/vnd.noaa.dwml+json;version=1");您将收到JSON回复。

答案 1 :(得分:0)

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

由于您检索数据的方法适用于不同的API,因此NWS API似乎很可能是故意悄悄地拒绝服务。也许它不喜欢您提供的电子邮件字符串,依此类推。

对于像这样的第三方API,你最好的选择是(1)按照手册,如果存在(例如,“RTFM”)或(2)尝试一下并尝试不同的东西,直到你找到有用的东西。

例如,我发现许多服务 - 包括API - 不喜欢我的一个电子邮件地址,格式为username@subdomain.domain.com,并拒绝服务。只有经过实验才能弄清楚这一点。