【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等

posted @   阿玛  阅读(822)  评论(0编辑  收藏  举报
编辑推荐:
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
阅读排行:
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 字符编码:从基础到乱码解决
点击右上角即可分享
微信分享提示