ASP.NET调用Web Services方法
创始人
2024-04-20 12:10:55
0

在Atlas中,它的“Web Services” 被放在了一个特殊的运行环境中执行(在某些情况下会委托给ASP.NET原有组件执行,这点在之前的文章中有过分析),因此,即使我们不是通过AJAX方式访问,只要了解Atlas那一套特殊的运行环境的行为,依旧能够给我们带来一些别的使用方式。下面的示例就将使用Atlas服务器端对于Web Services调用的支持,来讲解如何使用HTTP GET来调用Web Services方法(除非特别说明,以下所有的解释均针对Atlas的扩展,而不是ASP.NET的原有Web Services支持)。

首先,我们写一个Web Serivces方法:

  1. [WebMethod]  
  2. [WebOperation(true, ResponseFormatMode.Xml)]  
  3. public XmlDocument Vote(string name, int id)  
  4. {  
  5. XmlDocument responseDoc = new XmlDocument();  
  6. responseDoc.LoadXml(  
  7.  " type=\"text/xsl\" href=\"Vote.xsl\"?>" +  
  8.  "");  
  9. responseDoc.SelectSingleNode("//user").InnerText = name;  
  10. responseDoc.SelectSingleNode("//id").InnerText = id.ToString();  
  11. return responseDoc;  
  12. }  
  13.  

在Atlas中,HTTP POST为Web Services的默认支持方法,也是必然的支持方法。而如果需要使该Web Service方法支持HTTP GET的话,就必须如上面代码一样,使用Microsoft.Web.Services.WebOperationAttribute进行标注。 WebOperationAttribute的***个参数就是getVerbEnabled,true则表示支持HTTP GET方法。第二个参数Microsoft.Web.Services.ResponseFormatMode.Xml则表示结果对象的输出方式为 XML,而不是默认的JSON。

在这里,我们使用XML的原因是因为JSON在这里没有任何意义。返回JSON后是为了在获得这些内容之后通过Javascript函数eval执行,从而获得JSON表示的对象。而在这里,我们的目的是将结果显示给用户看,所以使用XML形式返回,再加上XSL的支持,就能以HTML的形式显示给用户了。

然后就是简单的XSL:

  1.  version="1.0" encoding="utf-8"?> 
  2.  version="1.0" 
  3. xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
  4.  match="/response"> 
  5.  
  6.  
  7. </FONT></STRONG>Thanks for your participation.<STRONG><FONT color=#006699> 
  8.  
  9.  style="font-family:Verdana; font-size:13px;"> 
  10. Thanks for your participation.

     
  11.  
  12. Dear  
  13.  select="user"/> 
  14. , you've voted for item  
  15.  select="id"/> 
  16. . 
 
  •  
  •  
  •  
  •   
  • 接下来就是我们的HTML文件。我们的目的非常简单,就是得到用户输入的信息,拼接成URL之后在新窗口中打开。因此我们在这里根本无需使用Atlas。代码如下:

    1. Name: type="text" id="txtName" />
       
    2. Item:  
    3.  id="comboItem"> 
    4.  value="1">Item 1 
    5.  value="2">Item 2 
    6.  value="3">Item 3 
    7.  value="4">Item 4 
    8.  value="5">Item 5 
    9.  
     
  •  type="button" value="Vote" onclick="vote()" /> 
  • 点击“Vote”按钮后,就会调用Javascript函数Vote()。代码如下:

    1.  language="javascript"> 
    2. function vote()  
    3. {  
    4. var url = "HttpGetWebService.asmx?mn=Vote";  
    5. url += ("&name=" + encodeURI(document.getElementById("txtName").value));  
    6. url += ("&id=" + document.getElementById("comboItem").value);  
    7.  
    8. window.open(url);  
    9. }  
    10.  

    我们需要拼接的URL很简单:首先使用在 QueryString里将mn设为我们即将调用Web Services方法名,然后就是在QueryString里调用Web Services方法所需的参数了。请注意,既然是使用URL拼接,那么就必须使用encodeURI进行编码后才能使用,否则可能会出现异常情况。以上介绍ASP.NET调用Web Services方法。

    【编辑推荐】

    1. ASP.NET MVC Web应用程序工程
    2. IIS6的ASP.NET ISAPI请求处理过程
    3. ASP.NET控件的七种用户管理相关控件
    4. 对ASP.Net进行RSA加密
    5. ASP.NET得到数据库字符串的方法

    相关内容

    热门资讯

    如何允许远程连接到MySQL数... [[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...
    如何利用交换机和端口设置来管理... 在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...
    施耐德电气数据中心整体解决方案... 近日,全球能效管理专家施耐德电气正式启动大型体验活动“能效中国行——2012卡车巡展”,作为该活动的...
    20个非常棒的扁平设计免费资源 Apple设备的平面图标PSD免费平板UI 平板UI套件24平图标Freen平板UI套件PSD径向平...
    德国电信门户网站可实时显示全球... 德国电信周三推出一个门户网站,直观地实时提供其安装在全球各地的传感器网络检测到的网络攻击状况。该网站...
    为啥国人偏爱 Mybatis,... 关于 SQL 和 ORM 的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行...
    《非诚勿扰》红人闫凤娇被曝厕所... 【51CTO.com 综合消息360安全专家提醒说,“闫凤娇”、“非诚勿扰”已经被黑客盯上成为了“木...
    2012年第四季度互联网状况报... [[71653]]  北京时间4月25日消息,据国外媒体报道,全球知名的云平台公司Akamai Te...