获取 天气Api 返回的 json 数据

zhang1struts1yun 2012-08-22 08:43:53
先调用 这个 http://www.weather.com.cn/data/cityinfo/101200101.html
然后 返回 数据 ,最好用 alert 循环 弹出 值

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

...全文
574 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
sjzjams 2012-12-01
  • 打赏
  • 举报
回复
...jsonp,获取到数据然后遍历json不久行了?
宝_爸 2012-08-23
  • 打赏
  • 举报
回复
代码已经经过测试,简单的用了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) || (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; }
}


宝_爸 2012-08-23
  • 打赏
  • 举报
回复
这不就是最简单的JSON吗?
杰拉尔 2012-08-23
  • 打赏
  • 举报
回复
楼主可以调用WEBSERIVE 返回的是XML用JQUERY很好遍历。JSON倒没见过
宝_爸 2012-08-23
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 的回复:]

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

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

JScript code

<script type="text/javascri……
[/Quote]

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

可以写个aspx,在aspx的code behind class中的Page_load中从www.weather.com.cn取得数据,并Response。
javascript从新的本网站的aspx中取得数据。
  • 打赏
  • 举报
回复
那你为什么不用ajax请求一个ashx,然后在ashx里面用webrequest类下载最新页面,然后利用正则表达获取出相应对数据,包装成json,返回前台页面呢?
zhang1struts1yun 2012-08-23
  • 打赏
  • 举报
回复
回复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的
风一样的大叔 2012-08-22
  • 打赏
  • 举报
回复
  • 打赏
  • 举报
回复

62,267

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧