首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

获取 天候Api 返回的 json 数据

2012-12-17 
获取 天气Api 返回的 json数据 先调用这个 http://www.weather.com.cn/data/cityinfo/101200101.html然后

获取 天气Api 返回的 json 数据
 先调用  这个 http://www.weather.com.cn/data/cityinfo/101200101.html
  然后 返回 数据 ,最好用 alert 循环 弹出 值

要完整的 代码, 要能 测试运行的...


[最优解释]
Demo
[其他解释]
代码已经经过测试,简单的用了WebBrowser控件:


        private void Form1_Load(object sender, EventArgs e)
        {
            string url = "http://www.weather.com.cn/data/cityinfo/101200101.html";

            webBrowser1.Navigate(url);
        }

        private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
        {
            //避免webbroswer.DocumentCompleted被多次引发
            if ((e.Url != webBrowser1.Url) 
[其他解释]
看看介个
[其他解释]
楼主可以调用WEBSERIVE 返回的是XML用JQUERY很好遍历。JSON倒没见过
[其他解释]
这不就是最简单的JSON吗?
[其他解释]
 (webBrowser1.ReadyState != WebBrowserReadyState.Complete))
                return;
            //下面写你要在页面加载完毕后执行的代码。

            string result = webBrowser1.Document.Body.InnerText;
            DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(weatherinfoClass));

            weatherinfoClass info = null;
            using (var ms = new MemoryStream(Encoding.UTF8.GetBytes(result))) 
            {
                info = serializer.ReadObject(ms) as weatherinfoClass;
            } 


        [DataContract]
        class weatherinfoClass
        {
            [DataMember]
            public weatherinfo weatherinfo { get; set; }
        }


        [DataContract]
        class weatherinfo
        {
            [DataMember] 


            public string city { get; set; }
            [DataMember] 
            public string cityid { get; set; }
            [DataMember] 
            public string temp1 { get; set; }
            [DataMember] 
            public string temp2 { get; set; }
            [DataMember] 
            public string weather { get; set; }
            [DataMember] 
            public string img1 { get; set; }
            [DataMember] 
            public string img2 { get; set; }
            [DataMember] 
            public string ptime { get; set; }
        }



[其他解释]
回复1楼:这个源码不错很详细,
回复2楼:下载不了,要登录,
回复3楼:webseriver用起来不方便,还要配置一个服务器,
回复4楼:你那个是winfrom 版的, 我做的是web 版的开发,不过还是谢谢 给的代码,可以参考

问题解决了,    另外问一下这 个 小问题(Bug),  


  <script type="text/javascript">

      var xmlhttp;
      // 创建XMLHTTPRequest对象   
      function createXMLHTTPRequest() {
          if (window.ActiveXObject)//②如果当前浏览器为IE   
          {
              xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
          }
          else if (window.XMLHttpRequest)//③如果是其他浏览器   
          {
              xmlhttp = new XMLHttpRequest();
          }
      }

      function getInfo() {
          createXMLHTTPRequest();


          xmlhttp.open("GET", "http://www.weather.com.cn/data/cityinfo/101200101.html", true);


          xmlhttp.onreadystatechange = returnInfo;
          xmlhttp.send(null);
      }


红色的圈起来的地方  报错:没有权限,   有没有 知道是什么 原因的啊,代码我是在别的网站上Copy的


[其他解释]
那你为什么不用ajax请求一个ashx,然后在ashx里面用webrequest类下载最新页面,然后利用正则表达获取出相应对数据,包装成json,返回前台页面呢?
[其他解释]

引用:
回复1楼:这个源码不错很详细,
回复2楼:下载不了,要登录,
回复3楼:webseriver用起来不方便,还要配置一个服务器,
回复4楼:你那个是winfrom 版的, 我做的是web 版的开发,不过还是谢谢 给的代码,可以参考

问题解决了,    另外问一下这 个 小问题(Bug),  

JScript code

  <script type="text/javascri……


XMLHttpRequest不能跨域的,因为安全问题。

可以写个aspx,在aspx的code behind class中的Page_load中从www.weather.com.cn取得数据,并Response。
javascript从新的本网站的aspx中取得数据。

热点排行