我有一个简单的方法,它想获取天气数据,当我称它为错误时:
用户代码HResult = -2146233076未处理System.Runtime.Serialization.SerializationException,该消息=反序列化了UWpWeather.RootObject类型的对象时发生错误。遇到意外字符“ <”。
public async static Task <RootObject> GetWeather(double lat, double lng) {
var http = new HttpClient();
var response = await http.GetAsync("http://api.openweathermap.org/data/2.5/forecast/daily?q=leeds&type=accurate&mode=xml&units=metric&cnt=3&appid= MY AIP-KEY");
string result = await response.Content.ReadAsStringAsync();
var serializer = new DataContractJsonSerializer(typeof (RootObject));
var ms = new MemoryStream(Encoding.UTF8.GetBytes(result));
var data = (RootObject) serializer.ReadObject(ms);
return data;
}
Run Code Online (Sandbox Code Playgroud)
API 不接受您在请求中传递的任何 HTTP 内容或 Accept 标头,而是根据查询字符串参数设置响应的内容类型。
您的初始网址:
http://api.openweathermap.org/data/2.5/forecast/daily?q=leeds&type=accurate&mode= xml &units=metric&cnt=3&appid= 我的 AIP-KEY"
它应该是什么:
http://api.openweathermap.org/data/2.5/forecast/daily?q=leeds&type=accurate&mode= json &units=metric&cnt=3&appid= 我的 AIP-KEY"
这应该允许您将其反序列化到RootObject正确的位置。
警告:我没有您的根对象实现,因此我只能进行验证,直到返回 JSON 格式的响应。
| 归档时间: |
|
| 查看次数: |
2564 次 |
| 最近记录: |