全国天气查询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,如:&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 = "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" , ""); //城市名,如:&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 = "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调用代码实例相关推荐

  1. java查询序列_基于JAVA的苹果序列号查询api调用代码实例

    代码描述:基于JAVA的苹果序列号查询api调用代码实例 关联数据:苹果序列号 接口地址:http://www.juhe.cn/docs/api/id/37 1.[代码][Java]代码 import ...

  2. java的苹果端接口_基于JAVA的苹果序列号查询api调用代码实例

    1.[代码][Java]代码 import java.io.BufferedReader; import java.io.DataOutputStream; import java.io.IOExce ...

  3. python个人信息查询代码_基于Python的商标信息查询api调用代码实例

    #!/usr/bin/python # -*- coding: utf-8 -*- import json, urllib from urllib import urlencode #-------- ...

  4. java 实现违章_基于JAVA的车辆违章查询数据调用代码实例

    基于JAVA的车辆违章查询数据调用代码实例 代码描述:基于JA V A的车辆违章查询数据调用代码实例 相关平台:聚合数据 import java.io.BufferedReader; import j ...

  5. java 页面查询_JAVA页面浏览量查询api调用代码实例

    代码描述:基于JAVA页面浏览量查询api调用代码实例 接口地址:http://www.juhe.cn/docs/api/id/51 1.[代码][Java]代码 import java.io.Buf ...

  6. php如何获取手机序列号,基于php的苹果序列号查询接口调用代码实例

    代码描述:基于php的苹果序列号查询接口调用代码实例 关联数据:苹果序列号 接口地址:http://www.juhe.cn/docs/api/id/37 // +------------------- ...

  7. python在律师上作中的实例_基于Python的律师信息查询接口调用代码实例

    基于Python的律师信息查询接口调用代码实例代码描述:基于Python的律师信息查询接口调用代码实例 代码平台:聚合数据 #!/usr/bin/python # -*- coding: utf-8 ...

  8. 医院医生评价的java代码_基于JAVA的医院信息查询接口调用代码实例

    基于JAVA的医院信息查询接口调用代码实例 import java.io.BufferedReader; import java.io.DataOutputStream; import java.io ...

  9. 基于PHP的车辆违章查询api调用代码示例

    本代码示例是基于聚合数据全国车辆违章查询API的调用,使用前你需要: ①:通过 http://www.juhe.cn/docs/api/id/36 申请一个违章查询的appkey 一.引入封装好的请求 ...

最新文章

  1. python中堆排序_python堆排序,详细过程图和讲解,这样做小白都会
  2. bst java_BST(二叉搜索树) Java 实现解析
  3. 如何编写无法维护的代码_如何写出让同事无法维护的代码?
  4. react学习(56)--常见HTTP错误
  5. 树1 树的同构_检查树是否同构
  6. python自动接收邮件_Python自动发送和收取邮件的方法
  7. openstack在xiandian界面登录提示无效证书_注意:2019年医师资格证书开始发放啦!...
  8. Java的throws Exception
  9. 小黑T61P 挂了,显卡门,维修经历跟踪
  10. git bash 下backspace键无法使用的问题
  11. android xposed软重启,Xposed插件安装更新免重启手机方案
  12. 使用eagle导出PCB制造商可用的gerber文件
  13. iOS程序员如何成为编程高手,并以此创业
  14. MapGuide应用程序示例——你好,MapGuide!
  15. 爬取小说网站章节和小说语音播放
  16. excel表格计算机二级销售,计算机二级excel真题:制作产品销售情况表
  17. 云部署vs本地部署_对于云部署,“有效”还不够好
  18. 拓扑序列(拓扑排序)
  19. android adhoc,android手机怎么连接adhoc共享电脑网络
  20. 多线程 (进阶+初阶)

热门文章

  1. javamail设置多个收件人发送简单文本邮件
  2. 有道词典提示您的网络暂时不可用或受限,请检查您的网络设置
  3. 成功,取决于你和什么样的人在一起
  4. 如何解决工厂工时计算问题
  5. windows下安装Ganache
  6. scratch案例——双人赛跑
  7. Hadoop的集群搭建及HDFS命令
  8. CPU硬件辅助虚拟化技术
  9. 喜提豪车已经out了,亚马逊Prime会员喜提邮轮之旅了解一下
  10. DLT645电力规约网关BL110应用之55:实现电力行业 DT/L645 接入金鸽Modbus云平台