WebService服务和ajax使用教程

    技术2022-05-11  79

    题外话:

    WebService技术已经有好几年的历史了,关于基础的理论知识,此处省去,不说了。最近被炒了的ajax技术也被滥用的很是严重,至于细节,不是我说的重点。

    ajax技术的入门比较低,javascript和xml的一点利用,个人以为没啥含量,不能在根本上解决企业的需求或者问题,在安全性,线路传输的低级等方面都有致命的问题.

    为什么要把WebService和ajax放一起,原因很简单, 两者的共同点准确的来说是经常按照同一数据协议--------XML.

    本文全部源码:userapp.rar

    本文既不说明ajax的弱,也不说WebService的强大,只是通过一个例子说明了如何使用WebService技术和ajax技术.

    我通过实例“用户登陆”展示How.在本地建立一个虚拟目录UserApp。

    先创建一个webservice:

    我们暂时不看细节,注意这是这个class有头WebService,标记了这是一个web服务.

    csc编译掉,放入bin目录,然后login.asmx文件:

    <%@WebService Class="Cjjer.UserService"%>

    我先不说验证的细节,我们先假设User.Check()返回的是用户级别,0表示验证失败.

    现在在URL中输入地址,访问:如图

    点击login:

    输入正确的用户名和密码,然后点击调用:

    如果不是正确的用户名和密码,将int节点值是0.

    我们本地的调用是在SOAP操作.

    还有很多方式:

    SOAP(最低级的)

    soap的这里不说,以后会详细说,我这里注意看的是get和post方式:

    HTTP GET

    面是一个 HTTP GET 请求和响应示例。所显示的占位符需要由实际值替换。

    GET /userapp/login.asmx/Login?UserName=string&UserPassword=string HTTP/1.1Host: s

    return:

    HTTP POST

    下面是一个 HTTP POST 请求和响应示例。所显示的占位符需要由实际值替换。

    return:

    我们可以输入url的地址,或者post的action,就可以访问和提交获取结果了.

    此处可以选择的操作其实也很多,使用屏幕清理技术,还可以用xml的处理框架提交信息的结果,也可以用其他技术,不说了,反正都是貌似需要几十行或者比我下面多一些处理。

    我说的是使用SDK的工具wsdl工具处理代理的web服务.

    wsdl /l:cs /out:WebsCjjer.cs /namespace:Webs /urlkey:WebsUser /nologo http://s:81/userapp/login.asmx?wsdl

    得到WebsCjjer.cs源文件。

    注意:/urlkey:WebsUser表示是URL可以是从web.config文件的WebsUser获取,这样做是避免硬编码,看看WebsCjjer.cs

    .......    public WebsCjjer() {            string urlSetting = System.Configuration.ConfigurationSettings.AppSettings["WebsUser"];            if ((urlSetting != null)) {                this.Url = urlSetting;            }            else {                this.Url = "http://s:81/userapp/login.asmx";            }        }.......

    为了能被其他的人访问,需要加入如下代码到web.config:

        <system.web>    <webServices>        <protocols>            <add name="HttpPost"/>            <add name="HttpGet"/>        </protocols>    </webServices>

    就是代理许可.

    编译了这个类,到bin,使用的时候如下:

    void OnLogin(Object s,EventArgs e){    Webs.WebsCjjer Ws_App = new Webs.WebsCjjer();    returnint.Text = Ws_App.Login(MyUserName.Text,MyPassword.Text).ToString();}

    这样,直接能返回结果,不需要我们自己正则或者xml处理,不需要知道验证的细节。

     

    HTTP/1.1 200 OKContent-Type: text/xml; charset=utf-8Content-Length: length

    <?xml version="1.0" encoding="utf-8"?><int xmlns="http://www.cjjer.com/webs/">int</int>

    POST /userapp/login.asmx/Login HTTP/1.1Host: sContent-Type: application/x-www-form-urlencodedContent-Length: length

    UserName=string&UserPassword=string

    HTTP/1.1 200 OKContent-Type: text/xml; charset=utf-8Content-Length: length

    <?xml version="1.0" encoding="utf-8"?><int xmlns="http://www.cjjer.com/webs/">int</int>

    namespace Cjjer{using System;using System.Web.Services;[WebService (Name="WebsCjjer",Description="一个验证用户登陆的web服务",Namespace="http://www.cjjer.com/webs/")]public class UserService{    [WebMethod (Description ="输入用户名和密,返回权限Int值,0表示失败",MessageName="Login")]    public int Login(string UserName,string UserPassword){        return User.Check(UserName,UserPassword);    }

    };}


    最新回复(0)