• Asp.Net操作WebServices


    最近在看一些关于webServices的资料,做了一个下例子整理一下,主要包括.net平台下创建services服务、后台访问和前端Ajax访问三部分。

    一、创建webServices服务。

    1、打开vs(本人2012),新建项目—>Web—>ASP.NET空Web空应用程序。

    2、在项目上右击选择“添加新建项目”--->Web->Web服务。

    3、添加两个方法:

        1>根据阿拉伯数字获得大写的文字

        2>获得用户列表

    代码和普通的C#代码一样整体代码下:

     1 using System.Collections.Generic;
     2 using System.Web.Services;
     3 
     4 namespace WebServices
     5 {
     6     [WebService(Namespace = "http://tempuri.org/")]
     7     [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
     8     [System.ComponentModel.ToolboxItem(false)]
     9     // 若要允许使用 ASP.NET AJAX 从脚本中调用此 Web 服务,请取消注释以下行。 
    10     [System.Web.Script.Services.ScriptService]
    11     public class GetBigString : WebService
    12     {
    13         /// <summary>
    14         /// 根据阿拉伯数字或得大写
    15         /// </summary>
    16         /// <param name="number"></param>
    17         /// <returns></returns>
    18         [WebMethod]
    19         public string ConvertBit(int number)
    20         {
    21             string str;
    22             switch (number)
    23             {
    24                 case 1:
    25                     str = "";
    26                     break;
    27                 case 2:
    28                     str = "";
    29                     break;
    30                 case 3:
    31                     str = "";
    32                     break;
    33                 default:
    34                     str = "请输入正确的一位数字";
    35                     break;
    36             }
    37             return str;
    38         }
    39 
    40         /// <summary>
    41         /// 获得学生集合
    42         /// </summary>
    43         /// <param name="stringId"></param>
    44         /// <returns></returns>
    45         [WebMethod]
    46         public List<Studnet> GetStudentList(string stringId)
    47         {
    48             var list = new List<Studnet>();
    49             var t = new Studnet { Address = "湖北省通城县咸宁市隽水镇", Age = 10, Name = "张三" };
    50             var t2 = new Studnet { Address = "北京市海淀区", Age = 10, Name = "李四" };
    51             list.Add(t);
    52             list.Add(t2);
    53             return list;
    54         }
    55     }
    56 
    57     public class Studnet
    58     {
    59         public string Name { get; set; }
    60 
    61         public int Age { get; set; }
    62 
    63         public string Address { get; set; }
    64 
    65     }
    66 }
    View Code

         将该asmx文件设为启动项,运行项目,就能看到该services的说明文件,如:”支持下列操作。有关正式定义,请查看”服务说明“字样。 点击在地址栏加上“?WSDL”或者点击“服务说明”,既可查看该webservices的说明文档,如:http://localhost:4828/GetBigString.asmx?WSDL。总之,能看到该页面,既说明服务启动成功。为了等下客户端调用方便,可将该程序部署到IIS中。

    二、在程序中通过引用服务的方式调用

    1、另外新建一个web项目。

    2、在"引用"上右击选择:”添加服务引用...“

    3、输入刚才浏览器中运行的服务地址,点击”转到“。(如果没有部署的IIS上,那么在添加引用的时候,需要将该服务项目运行起来,否则不能添加引用)

    4、输入自定义命名空间,点击确定即可。项目中即出现"Service References"文件夹。

    5、在项目中,通过实例化类的方式,调用服务。

    我在web项目中添加了一个aspx文件,在后台cs代码中添加如下代码:

     1 using System;
     2 using System.Web.UI;
     3 using WebServices;
     4 
     5 namespace Client
     6 {
     7     public partial class Index : Page
     8     {
     9         protected void Page_Load(object sender, EventArgs e)
    10         {
    11             // 调用WebServices,将结果赋值给页面控件
    12             TextBox1.Text = GetNumberString(1);
    13         }
    14 
    15         private string GetNumberString(int numner)
    16         {
    17             // 实例化服务类
    18             var g = new GetBigString();
    19             var str = g.ConvertBit(numner);
    20             return str;
    21         }
    22     }
    23 }
    View Code

    页面代码如下:

    1 <body>
    2     <form id="form1" runat="server">
    3         <div>
    4             <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
    5         </div>
    6     </form>
    7 </body>
    View Code

    运行该web项目,页面即可出现相应的结果。显示:”一“

    主意:在运行web客户端项目的时候,WebServices项目需要启动。

    三、用ajax的方式调用WebServices

    还是上面的WebServices服务,我们通过前端ajax调用,js代码如下:

     1 <script type="text/javascript">
     2         $(document).ready(function () {
     3             $.ajax({
     4                 type: "post", //访问WebService使用Post方式请求
     5                 url: "http://localhost:8066/GetBigString.asmx/GetStudentList"//WebService的地址和方法名称组合
     6                 data: "{stringId:'1'}", //Email参数
     7                 contentType: "Application/Json", // 发送信息内容编码类型
     8                 success: function (data) {
     9                     console.log(data.d);
    10                 }
    11             });
    12         });
    13     </script>
    View Code

    即可在控制台输出WebServices中的list数据对应的json数据了。

    四、需要主意的几点:

    1、在通过添加服务引用,或者通过ajax调用的过程中,WebServices项目相应是运行状态。

    2、我们在GetStudentList方法中,定义了一个string类型的参数,虽然项目中没有用到,但是在ajax调用的时候,必须传参,否则报错。

    3、在传递参数的时候,需要把整个参数部分用单引号括起来。

    4、如需要ajax调用,需要取消WebServices类文件的第一行注释代码:

    // 若要允许使用 ASP.NET AJAX 从脚本中调用此 Web 服务,请取消注释以下行。
    [System.Web.Script.Services.ScriptService]

    5、在ajax调用中,会出现ajax请求跨域的问题。

    已阻止跨源请求:同源策略禁止读取位于 **** 的远程资源。(原因:CORS 头缺少 'Access-Control-Allow-Origin')。
     解决方案参考:解决ajax请求cors跨域问题
     

     到此实例结束,技术有限,简单实列仅供入门参考。

    下载源码dome

     

    我是签名内容
  • 相关阅读:
    图论 —— tarjan 缩点 割点 (学习历程)连载中......
    模拟赛记
    模板(按照洛谷顺序)
    CSP-S退役记
    各知识点运用技巧总结
    P3665 [USACO17OPEN]Switch Grass
    跳跳棋——二分+建模LCA
    P3043 [USACO12JAN]牛联盟Bovine Alliance——并查集
    [ZJOI2013]K大数查询——整体二分
    CF741D Arpa’s letter-marked tree and Mehrdad’s Dokhtar-kosh paths——dsu on tree
  • 原文地址:https://www.cnblogs.com/litianci/p/4909689.html
Copyright © 2020-2023  润新知