获取 天气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,返回前台页面呢?
[其他解释]
XMLHttpRequest不能跨域的,因为安全问题。
可以写个aspx,在aspx的code behind class中的Page_load中从www.weather.com.cn取得数据,并Response。
javascript从新的本网站的aspx中取得数据。