【WebService&Soap】Soap http协议 应用【图】
两个 程序间想通信,如果是非互联网的,可以用socket基于tcp传输层的,如果是互联网和本地server可以webservice,将要共享出来的方法所在的类 发布成为webservice即可,webservice的核心就是此类衍变为的服务类。调用只需要声明xxxservice,getxxx方法创建后,服务类.方法()就可以了。
1.概念
Web Service也叫XML Web Service WebService是一种可以接收从Internet或者Intranet上的其它系统中传递过来的请求,轻量级的独立的通讯技术。是:通过SOAP在Web上提供的软件(服务),使用WSDL文件进行(说明),并通过(UDDI)进行注册。
XML:(Extensible Markup Language)扩展型可标记语言。面向短期的临时数据处理、面向万维网络,是Soap的基础。
Soap:(Simple Object Access Protocol)简单对象存取协议。是XML Web Service 的通信协议。当用户通过UDDI找到你的WSDL描述文档后,他通过可以SOAP调用你建立的Web服务中的一个或多个操作。SOAP是XML文档形式的调用方法的规范,它可以支持不同的底层接口,像HTTP(S)或者SMTP。
WSDL:(Web Services Description Language) WSDL 文件是一个 XML 文档,用于说明一组 SOAP 消息以及如何交换这些消息。大多数情况下由软件自动生成和使用。wsdl很重要,既是声明要用,又是调用的时候要用到。
.asmx是webservice服务程序(应该就是代码)的后缀名,ASP.NET 使用.asmx 文件来对Web Services的支持。.asmx 文件和.aspx文件一样都属于文本文件。它包含在.aspx文件之中,成为ASP.NET应用程序的一部分。
2.图解

实现soap 在java中的调用
1)网站上拷贝出soap的xml request请求

3. WsImport工具 调用ws

4.代码调用
wsdl很重要,既是声明要用,又是调用的时候要用到。
左侧package里的cn.it.ws.c里的都是wsdl用wsimport自动生成的代码

5. 发布(自动生成wsdl)
一个端口下可以发布多个服务

默认发布的是soap 1.1的服务
4.1 代码里的总结:
比如你定义一个实现类,想要发布作为webservice. 这个实现类叫MyClass.
发布完Service pulish wsdl后,
servername:MyClassService
name(实现类):MyClass(作为ws最重要的实现,服务类,被作为服务要使用的最核心的代码)
Port(实现方法是soap还是什么):MyClassPort
5.1有了wsdl,就可以自动生成类代码了


5.2 调用成功

5.3 总结

6.wsdl的配置要详细看懂(没讲解要自己查)
7.Ajax调用ws
ajax不支持跨域,使用serlet解决(serlet: http://www.cnblogs.com/ambon/articles/5482169.html)
wsimport生成javabin,已经放到了cn.it.ws.d这个包,ajax发到serlet,serlet调用自己本地就没有问题了。
serlet:就像HttpHandler。 jsp 实质上 也会被编译成Servlet一样
.net的实现 个人认为也是 .aspx 和后台代码 会被编译成一个HttpHandler

在ws里创建serlet,serlet自己调用ws里的东西是不用写localhost,直接写http域名,就可以解决域名访问不到的问题

原生ajax会有以上问题,改写成jquery的post形式 调用ajax
原生的:
jquery的

8.ws发布注意项目

9.注解
wsdl需要很好的命名规范,才能更好的维护,和使用,比如声明的参数名字为arg0,arg1(默认生成的)。
在代码中可以直接修改name等


浙公网安备 33010602011771号