All articles| All Pictures| All Softwares| All Video| Go home page| Write articles| Upload pictures

Reading number is top 10 articles
c#编程中学习数据结构的必要性
常用技巧:用PHP控制您的浏览器cache_php资料_编程技术
DataGrid资料_[Asp.Net教程]
ASP.NET的底层的工作机制介绍_.net资料_编程技术
如何加快数据库查询速度-_[SQL Server教程]
技巧:ASP.Net,2.0,发送邮件的代码_.net资料_编程技术
.net组件开发系列(四)之事件处理机制,三个接口两个方法_[Asp.Net教程]
网站繁简转换解决方案--ASP,JSP,PHP,.Net通用_php资料_编程技术
扩展GridView控件(六)——数据行响应鼠标的单击和双击事件_[Asp.Net教程]
SQL数据库高级教程:SQL SELECT INTO 语句_[SQL Server教程]
Reading number is top 10 pictures
全身蕾丝丝质美臀
Most cow mistress ZhaoGongXia face exposure
小学生作文又现神作,你不得不佩服
A man's favorite things1
运动的范冰冰1
2012 national geographic daily picture3
Wild animals melee moment of life and death1
如果我是导演...
超级大兔子
徐若瑄展示美丽胸围3
Download software ranking
变速齿轮3.26
虚拟机5.5.3版
天龙八部十二宫服务端
Boxer's Top ten classic battle3
塘西风月痕
Call Of Duty2
ASP.NET.2.0.XML.高级编程(第3版)
Tram sex maniac 2 (H) rar bag18
White deer villiage
株洲本地在线棋牌游戏
delv published in(发表于) 2014/1/6 9:10:38 Edit(编辑)
在ASP.NET,Atlas中调用Web,Service_[Asp.Net教程]

在ASP.NET,Atlas中调用Web,Service_[Asp.Net教程]

在ASP.NET Atlas中调用Web Service_[Asp.Net教程]

在前一篇文章(在ASP.NET Atlas中调用Web Service——创建Mashup调用远端Web Service(基础知识以及简单示例))中,我介绍了一些Atlas中对远程Web Service进行Mashup的基础知识,并给出了一个最基础的没有丝毫用处例子。今天再回到这个话题上,我将给出一个更复杂点的,但有一些用处的例子——Yahoo! Weather。

  废话到此为止,让我们先熟悉一下Yahoo! Weather服务:Yahoo!在其网站上提供了天气预报服务(http://weather.yahoo.com/),并且它也提供了Web Service的接口(http://developer.yahoo.com/weather/)


  从上面两个网页上面,我们可以知道Yahoo!提供的天气Service的URL为http://xml.weather.yahoo.com/forecastrss,该服务还有两个参数:


  p:要查询天气的地点代码(可以在http://weather.yahoo.com/查询到不同地方的这个代码)。


  u:返回结果中温度的单位,f代表华氏度,c代表摄氏度。


  看来这个Yahoo! Weather服务还挺简单的,让我们测试下好不好用。先到http://weather.yahoo.com/查出来上海的地点代码为CHXX0116。然后在浏览器中输入http://xml.weather.yahoo.com/forecastrss?p=CHXX0116&u=c,嗯,返回了如下的一段不是很复杂的XML:


Yahoo Weather Service XML Result



Yahoo! Weather - Shanghai, CH http://us.rd.yahoo.com/dailynews/rss/weather/Shanghai__CH/*http://xml.weather.yahoo.com/forecast/CHXX0116_c.html
Yahoo! Weather for Shanghai, CH
en-us
Thu, 25 May 2006 11:00 am CST
60






Yahoo! Weather
142
18
http://weather.yahoo.com/
http://us.i1.yimg.com/us.yimg.com/i/us/nws/th/main_142b.gif


Conditions for Shanghai, CH at 11:00 am CST
31.17
121.43 http://us.rd.yahoo.com/dailynews/rss/weather/Shanghai__CH/*http://xml.weather.yahoo.com/forecast/CHXX0116_c.html
Thu, 25 May 2006 11:00 am CST




Current Conditions:

Fog, 21 C


Forecast:

Thu - Scattered Thunderstorms. High: 25 Low: 20

Fri - AM Showers. High: 26 Low: 18



Full Forecast at Yahoo! Weather

(provided by The Weather Channel)

]]>



CHXX0116_2006_05_25_11_0_CST





  我们可以看到,它提供的信息非常全面(连日出日落时间都有……),下面让我们书写asbx Bridge页面来对这个Service进行Mashup。


  首先,参考在ASP.NET Atlas中调用Web Service——创建Mashup调用远端Web Service(基础知识以及简单示例)这篇文章中的那个asbx的声明,我们可以写出如下一段:




serviceUrl="http://xml.weather.yahoo.com/forecastrss" />







  其中:的namespace和className属性以及的name属性让我们在客户端JavaScript中可以通过Dflying.YahooWeatherService.GetWeather()这样的方法签名来访问这个Mashup。 的serviceUrl属性指定了Yahoo! Weather Service的URL。


  GetWeather方法中定义了上面列出来的p和u两个参数,其中u参数我们指定了它的默认值为c(代表摄氏度),p参数将由调用者负责传过来。


  写到这一步其实也够了,客户端将收到上面浏览器中看到的那一段XML String,并且可以在客户端进行处理并显示。但客户端对XML的处理并不是那么容易,也不是那么高效,同时通过网络传输太多不必要的信息也是一种浪费。所以这里我们利用asbx中内建的Transformer对这段XML处理一下,提取出我们感兴趣的内容并以JSON的形式发给客户端。在段中加入下面一段:





















  其中
声明表示这个Mashup方法的返回值将会被一些transformer改变一下,里面声明了一个类型为Microsoft.Web.Services.XPathBridgeTransformer的transformer,表示将用XPath表达式来转换。在这个XPathBridgeTransformer中要声明如下部分:


  name为selector的一个attribute段,其中指定的value属性为一个XPath表达式,将选取整个XPathBridgeTransformer将用到的数据段。


  name为namespaceMapping的一个dictionary段,其中指定了这个XML文件中的namespace映射。如果在下面的选择节点过程中我们用到了某个namespace,那么这里就必须有它的声明。这里我们在其中添加一个对yweather的映射,因为下面要用到。


  name为selectedNodes的一个dictionary段,其中每一个item的value属性是一个XPath String,用来从XML中选择出相应的值,name属性用来指定相应的在JavaScript中的属性名称。这里作为示例,我只取得其中三段内容,您可以看到,其中CurrentCondition的XPath中用到了上面指定的namespaceMapping。


  关于XPath的知识,我就不多讲了,感兴趣或是不太熟悉的朋友可以自行Google,网上资源很多。关于其他类型的Transformer,我也不是很熟悉,今后如果遇到了我再讲讲。完成后的YahooWeatherBridge.asbx文件如下:




serviceUrl="http://xml.weather.yahoo.com/forecastrss" />


























  现在创建一个ASP.NET Page测试一下,首先依然是重复了一千遍的ScriptManager,还有对Bridge的引用:







  然后一个HTML Select元素,里面列入了几个城市以及相应的城市代码:





  一个HTML Button,用来触发对Service的调用:




onclick="return getWeather_onclick()" />


  一段HTML用来显示结果:







Title




Description





  然后是JavaScript,可以看到通过Dflying.YahooWeatherService.GetWeather()调用了Mashup,并在方法返回后把经过transform的值输出到了页面上:


function getWeather_onclick() {
// new atlas 'Select' control
var place = new Sys.UI.Select(('place'));

// invoke the bridge method
Dflying.YahooWeatherService.GetWeather({'p': place.get_selectedValue()}, onGetComplete);
}
function onGetComplete(result) {
('result').style.display = "block";
('title').innerHTML = result[0].Title;
('description').innerHTML = result[0].Description;
}


作者:Dflying Chen 来源:博客园





添加到del.icio.us 添加到新浪ViVi 添加到百度搜藏 添加到POCO网摘 添加到天天网摘365Key 添加到和讯网摘 添加到天极网摘 添加到黑米书签 添加到QQ书签 添加到雅虎收藏 添加到奇客发现 diigo it 添加到饭否 添加到飞豆订阅 添加到抓虾收藏 添加到鲜果订阅 digg it 貼到funP 添加到有道阅读 Live Favorites 添加到Newsvine 打印本页 用Email发送本页 在Facebook上分享


Disclaimer Privacy Policy About us Site Map

If you have any requirements, please contact webmaster。(如果有什么要求,请联系站长)
Copyright ©2011-
uuhomepage.com, Inc. All rights reserved.