首页 > 开发 > AJAX > 正文

WebService服务和ajax使用教程

2024-07-21 02:28:29
字体:
来源:转载
供稿:网友

题外话

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

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

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

本文全部源码userapp.rar

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

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

先创建一个webservice:

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);
    }


};
}

我们暂时不看细节,注意这是这个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.1
host: s

return:

http/1.1 200 ok
content-type: text/xml; charset=utf-8
content-length: length

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

http post

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

post /userapp/login.asmx/login http/1.1
host: s
content-type: application/x-www-form-urlencoded
content-length: length

username=string&userpassword=string

return:

http/1.1 200 ok
content-type: text/xml; charset=utf-8
content-length: length

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

我们可以输入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处理,不需要知道验证的细节


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表