下面是我的Web API代码。当我在API的URL中传递城市信息时,我得到了System.Net.WebException(远程服务器返回错误:(401)未经授权。)。
[HttpGet]
public string GetWeatherReport(string cityName)
{
string json = string.Empty;
string createRequest = "http://api.openweathermap.org/data/2.5/weather?q=" + cityName + "&mode=xml&units=metric&appid=APIKEY";
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(createRequest);
request.UseDefaultCredentials = true;
request.PreAuthenticate = true;
request.Credentials = CredentialCache.DefaultCredentials;
try
{
using (HttpWebResponse httpWebResponse = (HttpWebResponse)request.GetResponse() as HttpWebResponse)
{
System.IO.StreamReader streamReader = new System.IO.StreamReader(httpWebResponse.GetResponseStream());
JsonSerializerSettings jsonSerializerSettings = new JsonSerializerSettings();
jsonSerializerSettings.MissingMemberHandling = MissingMemberHandling.Ignore;
string data = streamReader.ReadToEnd();
XmlDocument doc = new XmlDocument();
doc.LoadXml(data);
json = JsonConvert.SerializeXmlNode(doc).Replace("@", "");
}
}
catch (Exception ex)
{
throw;
}
return json;
}
答案 0 :(得分:0)
根据有关错误401的OpenWeatherMaps常见问题解答,他们有以下说法:
在以下情况下,您会收到错误401:
从2015年10月9日开始,我们的API需要有效的APPID才能访问。请注意,这不是并不意味着我们的API现在仅订阅-请花一分钟时间注册一个 FREE 帐户以获取密钥。
对于FOSS开发人员::我们欢迎免费和开源的软件,并愿意为您提供帮助。如果要在免费软件应用程序中使用OWM数据,请注册一个API密钥并提交一张票证,描述您的应用程序和已注册的API密钥。如果在开放源代码应用程序中使用过,OWM将检查您的密钥请求升降机访问限制。
从外观上看,您正在提供一个API密钥,并且您尝试获取的特定数据是免费提供的一部分,我将按照上面的建议再次检查您的API密钥。