• 编写 WebService 程序


    WebService 是一种概念吗?你又是如何理解的呢?

    之前,我写的程序为了让代码和Html分开是用的 Request 对象,然后Switch 一下..WebService SOAP 神马的概念一头雾水,看了WebService的例子之后发现也就是在这个基础上省了一个Swith 方法,因为它直接把方法生成了url的一部分。

    下面写一个最简单的WebService 并指出其中所注意的事项

    1.VS2010 不支持 WebService?

    新建的时候,把.NET FrameWork 4.0 改成3.5 或者一下 新建Web服务后再改成 4.0

    为了让他们支持JSON 要是改成了2.0 就要记得在建立工程后改回来

    2.WebService 只能返回XML数据?

    在方法上面加上这一句就可以返回XML数据了

     [ScriptMethod(ResponseFormat = ResponseFormat.Json)]

    需要添加以下引用

    using System.Web.Script.Services;

    3.若要允许使用  AJAX 从脚本中调用此 Web 服务,请取消对下行的注释。否则Ajax 调用Web服务时会报HTTP 500 错误
    [System.Web.Script.Services.ScriptService]

    写下如下的代码:

    using System;
    using System.Collections.Generic;
    using System.Web;
    using System.Web.Script.Services;
    using System.Web.Services;
    
    namespace TestService
    {
    
        [WebService(Namespace = "http://localhost/")]
        [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
        [System.ComponentModel.ToolboxItem(false)]
        [System.Web.Script.Services.ScriptService]
        public class Service1 : System.Web.Services.WebService
        {
    
            [WebMethod]
            [ScriptMethod(ResponseFormat = ResponseFormat.Json)]
            public string HelloWorld()
            {
                return "Hello World";
            }
    
            [WebMethod]
            [ScriptMethod(ResponseFormat = ResponseFormat.Json)]
            public User GetOneUserInfo(string name, int age)
            {
                return (new User { Name = name, Age = age });
            }
    
            [WebMethod]
            [ScriptMethod(ResponseFormat = ResponseFormat.Json)]
            public User[] GetUsers(string name, int age)
            {
                List<User> res = new List<User>();
                res.Add(new User { Name = name + "1", Age = age });
                res.Add(new User { Name = name + "2", Age = age });
                return res.ToArray();
            }
        }
        public class User
        {
            public string Name { get; set; }
            public int Age { get; set; }
        }
    }


    写下如下的测试 html

    <input type="button" id="ipt1" value="test" />
    <script type="text/javascript" src="jquery-1.8.2/jquery-1.8.2.js"></script>
    <script type="text/javascript">
    
        function GetInfo() {
            $.ajax({
                type: "POST",
                url: "/Service1.asmx/GetOneUserInfo",
                contentType: "application/json; charset=utf-8",
                dataType: 'json',
                data: "{name:'aaaa',age:29}",
                success: function (data) {
                    if (data.hasOwnProperty("d")) {
                        res = data.d;
                        alert(res.Name);
                    }
                    else
                        res = data;
                }
            });
    	}
    
    	$('#ipt1').click(function () {
    	    GetInfo();
    	});
    </script>
    

    1.HTTP POST 过去参数的名称,对应 WebService 函数中参数的名称,windows 的 WebService 接收不按照顺序,按照名称,而且不区分大小写

    2.服务器返回的对象直接序列化成Json 按照程序所示,可以通过data.d 得到其对象,不知道支不支持多个list的Json,可以试试

    3.调试过程的请求时,仍然会有HTTP 500 错误,看来只有部署上WebService 才能解决这个问题了

  • 相关阅读:
    专用学习笔记
    百度地图API试用--(初次尝试)
    学习进度条
    AAAA
    HBase集成(准备篇)
    软件工程学期总结
    【操作系统】实验四 主存空间的分配和回收
    《构建之法》8、9、10章
    金融计算器app的下载情况
    操作系统 实验三 进程调度模拟程序
  • 原文地址:https://www.cnblogs.com/oftenlin/p/2746759.html
Copyright © 2020-2023  润新知