1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 基于C#的全国天气查询API调用代码实例

基于C#的全国天气查询API调用代码实例

时间:2020-05-15 18:08:16

相关推荐

基于C#的全国天气查询API调用代码实例

全国天气查询API:/docs/api/id/39

基于C#的全国天气查询API调用代码实例

using System;using System.Collections.Generic;using System.Linq;using System.Text;using ;using System.IO;using ;using System.Diagnostics;using System.Web;//----------------------------------// 全国天气预报调用示例代码 - 聚合数据// 在线接口文档:/docs/39// 代码中JsonObject类下载地址:/download/gcm3206021155665/7458439//----------------------------------namespace ConsoleAPI{class Program{static void Main(string[] args){string appkey = "*******************"; //配置您申请的appkey//1.根据城市名/id查询天气string url1 = "/weather/index";var parameters1 = new Dictionary<string, string>();parameters1.Add("cityname" , ""); //城市名或城市ID,如:&quot;苏州&quot;,需要utf8 urlencodeparameters1.Add("dtype" , ""); //返回数据格式:json或xml,默认jsonparameters1.Add("format" , ""); //未来6天预报(future)两种返回格式,1或2,默认1parameters1.Add("key", appkey);//你申请的keystring result1 = sendPost(url1, parameters1, "get");JsonObject newObj1 = new JsonObject(result1);String errorCode1 = newObj1["error_code"].Value;if (errorCode1 == "0"){Debug.WriteLine("成功");Debug.WriteLine(newObj1);}else{//Debug.WriteLine("失败");Debug.WriteLine(newObj1["error_code"].Value+":"+newObj1["reason"].Value);}//2.天气种类及标识列表string url2 = "/weather/uni";var parameters2 = new Dictionary<string, string>();parameters2.Add("key", appkey);//你申请的keyparameters2.Add("dtype" , ""); //返回数据的格式,xml或json,默认jsonstring result2 = sendPost(url2, parameters2, "get");JsonObject newObj2 = new JsonObject(result2);String errorCode2 = newObj2["error_code"].Value;if (errorCode2 == "0"){Debug.WriteLine("成功");Debug.WriteLine(newObj2);}else{//Debug.WriteLine("失败");Debug.WriteLine(newObj2["error_code"].Value+":"+newObj2["reason"].Value);}//3.根据IP查询天气string url3 = "/weather/ip";var parameters3 = new Dictionary<string, string>();parameters3.Add("ip" , ""); //ip地址,如:58.215.185.154parameters3.Add("dtype" , ""); //返回数据格式:json或xml,默认jsonparameters3.Add("format" , ""); //未来6天预报(future)两种返回格式,1或2,默认1parameters3.Add("key", appkey);//你申请的keystring result3 = sendPost(url3, parameters3, "get");JsonObject newObj3 = new JsonObject(result3);String errorCode3 = newObj3["error_code"].Value;if (errorCode3 == "0"){Debug.WriteLine("成功");Debug.WriteLine(newObj3);}else{//Debug.WriteLine("失败");Debug.WriteLine(newObj3["error_code"].Value+":"+newObj3["reason"].Value);}//4.根据GPS坐标查询天气string url4 = "/weather/geo";var parameters4 = new Dictionary<string, string>();parameters4.Add("lon" , ""); //经度,如:116.39277parameters4.Add("lat" , ""); //纬度,如:39.933748parameters4.Add("format" , ""); //未来6天预报(future)两种返回格式,1或2,默认1parameters4.Add("dtype" , ""); //返回数据格式:json或xml,默认jsonparameters4.Add("key", appkey);//你申请的keystring result4 = sendPost(url4, parameters4, "get");JsonObject newObj4 = new JsonObject(result4);String errorCode4 = newObj4["error_code"].Value;if (errorCode4 == "0"){Debug.WriteLine("成功");Debug.WriteLine(newObj4);}else{//Debug.WriteLine("失败");Debug.WriteLine(newObj4["error_code"].Value+":"+newObj4["reason"].Value);}//5.城市天气三小时预报string url5 = "/weather/forecast3h";var parameters5 = new Dictionary<string, string>();parameters5.Add("cityname" , ""); //城市名,如:&quot;苏州&quot;parameters5.Add("dtype" , ""); //返回数据格式:json或xml,默认jsonparameters5.Add("key", appkey);//你申请的keystring result5 = sendPost(url5, parameters5, "get");JsonObject newObj5 = new JsonObject(result5);String errorCode5 = newObj5["error_code"].Value;if (errorCode5 == "0"){Debug.WriteLine("成功");Debug.WriteLine(newObj5);}else{//Debug.WriteLine("失败");Debug.WriteLine(newObj5["error_code"].Value+":"+newObj5["reason"].Value);}//6.支持城市列表string url6 = "/weather/citys";var parameters6 = new Dictionary<string, string>();parameters6.Add("dtype" , ""); //返回数据格式:json或xml,默认jsonparameters6.Add("key", appkey);//你申请的keystring result6 = sendPost(url6, parameters6, "get");JsonObject newObj6 = new JsonObject(result6);String errorCode6 = newObj6["error_code"].Value;if (errorCode6 == "0"){Debug.WriteLine("成功");Debug.WriteLine(newObj6);}else{//Debug.WriteLine("失败");Debug.WriteLine(newObj6["error_code"].Value+":"+newObj6["reason"].Value);}}/// <summary>/// Http (GET/POST)/// </summary>/// <param name="url">请求URL</param>/// <param name="parameters">请求参数</param>/// <param name="method">请求方法</param>/// <returns>响应内容</returns>static string sendPost(string url, IDictionary<string, string> parameters, string method){if (method.ToLower() == "post"){HttpWebRequest req = null;HttpWebResponse rsp = null;System.IO.Stream reqStream = null;try{req = (HttpWebRequest)WebRequest.Create(url);req.Method = method;req.KeepAlive = false;req.ProtocolVersion = HttpVersion.Version10;req.Timeout = 5000;req.ContentType = "application/x-www-form-urlencoded;charset=utf-8";byte[] postData = Encoding.UTF8.GetBytes(BuildQuery(parameters, "utf8"));reqStream = req.GetRequestStream();reqStream.Write(postData, 0, postData.Length);rsp = (HttpWebResponse)req.GetResponse();Encoding encoding = Encoding.GetEncoding(rsp.CharacterSet);return GetResponseAsString(rsp, encoding);}catch (Exception ex){return ex.Message;}finally{if (reqStream != null) reqStream.Close();if (rsp != null) rsp.Close();}}else{//创建请求HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url + "?" + BuildQuery(parameters, "utf8"));//GET请求request.Method = "GET";request.ReadWriteTimeout = 5000;request.ContentType = "text/html;charset=UTF-8";HttpWebResponse response = (HttpWebResponse)request.GetResponse();Stream myResponseStream = response.GetResponseStream();StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.GetEncoding("utf-8"));//返回内容string retString = myStreamReader.ReadToEnd();return retString;}}/// <summary>/// 组装普通文本请求参数。/// </summary>/// <param name="parameters">Key-Value形式请求参数字典</param>/// <returns>URL编码后的请求数据</returns>static string BuildQuery(IDictionary<string, string> parameters, string encode){StringBuilder postData = new StringBuilder();bool hasParam = false;IEnumerator<KeyValuePair<string, string>> dem = parameters.GetEnumerator();while (dem.MoveNext()){string name = dem.Current.Key;string value = dem.Current.Value;// 忽略参数名或参数值为空的参数if (!string.IsNullOrEmpty(name))//&& !string.IsNullOrEmpty(value){if (hasParam){postData.Append("&");}postData.Append(name);postData.Append("=");if (encode == "gb2312"){postData.Append(HttpUtility.UrlEncode(value, Encoding.GetEncoding("gb2312")));}else if (encode == "utf8"){postData.Append(HttpUtility.UrlEncode(value, Encoding.UTF8));}else{postData.Append(value);}hasParam = true;}}return postData.ToString();}/// <summary>/// 把响应流转换为文本。/// </summary>/// <param name="rsp">响应流对象</param>/// <param name="encoding">编码方式</param>/// <returns>响应文本</returns>static string GetResponseAsString(HttpWebResponse rsp, Encoding encoding){System.IO.Stream stream = null;StreamReader reader = null;try{// 以字符流的方式读取HTTP响应stream = rsp.GetResponseStream();reader = new StreamReader(stream, encoding);return reader.ReadToEnd();}finally{// 释放资源if (reader != null) reader.Close();if (stream != null) stream.Close();if (rsp != null) rsp.Close();}}}}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。