基于C#的全国天气查询API调用代码实例
全国天气查询API:https://www.juhe.cn/docs/api/id/39
基于C#的全国天气查询API调用代码实例
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Net; using System.IO; using Xfrog.Net; using System.Diagnostics; using System.Web;//---------------------------------- // 全国天气预报调用示例代码 - 聚合数据 // 在线接口文档:http://www.juhe.cn/docs/39 // 代码中JsonObject类下载地址:http://download.csdn.net/download/gcm3206021155665/7458439 //----------------------------------namespace ConsoleAPI {class Program{static void Main(string[] args){string appkey = "*******************"; //配置您申请的appkey//1.根据城市名/id查询天气string url1 = "http://v.juhe.cn/weather/index";var parameters1 = new Dictionary<string, string>();parameters1.Add("cityname" , ""); //城市名或城市ID,如:"苏州",需要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 = "http://v.juhe.cn/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 = "http://v.juhe.cn/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 = "http://v.juhe.cn/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 = "http://v.juhe.cn/weather/forecast3h";var parameters5 = new Dictionary<string, string>();parameters5.Add("cityname" , ""); //城市名,如:"苏州"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 = "http://v.juhe.cn/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();}}} }
基于C#的全国天气查询API调用代码实例相关推荐
- java查询序列_基于JAVA的苹果序列号查询api调用代码实例
代码描述:基于JAVA的苹果序列号查询api调用代码实例 关联数据:苹果序列号 接口地址:http://www.juhe.cn/docs/api/id/37 1.[代码][Java]代码 import ...
- java的苹果端接口_基于JAVA的苹果序列号查询api调用代码实例
1.[代码][Java]代码 import java.io.BufferedReader; import java.io.DataOutputStream; import java.io.IOExce ...
- python个人信息查询代码_基于Python的商标信息查询api调用代码实例
#!/usr/bin/python # -*- coding: utf-8 -*- import json, urllib from urllib import urlencode #-------- ...
- java 实现违章_基于JAVA的车辆违章查询数据调用代码实例
基于JAVA的车辆违章查询数据调用代码实例 代码描述:基于JA V A的车辆违章查询数据调用代码实例 相关平台:聚合数据 import java.io.BufferedReader; import j ...
- java 页面查询_JAVA页面浏览量查询api调用代码实例
代码描述:基于JAVA页面浏览量查询api调用代码实例 接口地址:http://www.juhe.cn/docs/api/id/51 1.[代码][Java]代码 import java.io.Buf ...
- php如何获取手机序列号,基于php的苹果序列号查询接口调用代码实例
代码描述:基于php的苹果序列号查询接口调用代码实例 关联数据:苹果序列号 接口地址:http://www.juhe.cn/docs/api/id/37 // +------------------- ...
- python在律师上作中的实例_基于Python的律师信息查询接口调用代码实例
基于Python的律师信息查询接口调用代码实例代码描述:基于Python的律师信息查询接口调用代码实例 代码平台:聚合数据 #!/usr/bin/python # -*- coding: utf-8 ...
- 医院医生评价的java代码_基于JAVA的医院信息查询接口调用代码实例
基于JAVA的医院信息查询接口调用代码实例 import java.io.BufferedReader; import java.io.DataOutputStream; import java.io ...
- 基于PHP的车辆违章查询api调用代码示例
本代码示例是基于聚合数据全国车辆违章查询API的调用,使用前你需要: ①:通过 http://www.juhe.cn/docs/api/id/36 申请一个违章查询的appkey 一.引入封装好的请求 ...
最新文章
- python中堆排序_python堆排序,详细过程图和讲解,这样做小白都会
- bst java_BST(二叉搜索树) Java 实现解析
- 如何编写无法维护的代码_如何写出让同事无法维护的代码?
- react学习(56)--常见HTTP错误
- 树1 树的同构_检查树是否同构
- python自动接收邮件_Python自动发送和收取邮件的方法
- openstack在xiandian界面登录提示无效证书_注意:2019年医师资格证书开始发放啦!...
- Java的throws Exception
- 小黑T61P 挂了,显卡门,维修经历跟踪
- git bash 下backspace键无法使用的问题
- android xposed软重启,Xposed插件安装更新免重启手机方案
- 使用eagle导出PCB制造商可用的gerber文件
- iOS程序员如何成为编程高手,并以此创业
- MapGuide应用程序示例——你好,MapGuide!
- 爬取小说网站章节和小说语音播放
- excel表格计算机二级销售,计算机二级excel真题:制作产品销售情况表
- 云部署vs本地部署_对于云部署,“有效”还不够好
- 拓扑序列(拓扑排序)
- android adhoc,android手机怎么连接adhoc共享电脑网络
- 多线程 (进阶+初阶)