加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

WebService基础学习

发布时间:2020-12-16 22:25:24 所属栏目:安全 来源:网络整理
导读:1,基础术语 ??? WSDL:web service definition language ???????? 对应一种类型的文件.wsdl ??????? 一个web service对应一个唯一的wsdl文档 ??????? 定义了web service的服务器端与客户端应用交互传递请求和响应数据的格式和方式 ??? SOAP:simple object
1,基础术语
??? WSDL:web service definition language
???????? 对应一种类型的文件.wsdl
??????? 一个web service对应一个唯一的wsdl文档
??????? 定义了web service的服务器端与客户端应用交互传递请求和响应数据的格式和方式
??? SOAP:simple object access protocal
??????? http+xml(schema)片断
??????? soap消息:请求消息和响应消息
??????? 它依赖于wsdl文档的定义
??? SEI:Service EndPoint Interface
??????? web service的终端接口,就是服务器端用来处理请求的接口
??? CXF:Celtix and XFire

??????? 一个apache的webservice框架

2,代码实现

? ①. 服务器端
?? ?编码:
?? ??? ?a. 创建一个基于jdk6以上版本的java工程
?? ??? ?b. 定义SEI web service Endpoint interface(web service终端接口)
?? ??? ??? ?@WebService
?? ??? ??? ?public interface HelloWS {
?? ??? ??? ??? ?@WebMethod
?? ??? ??? ??? ?public String sayHello(String name);
?? ??? ??? ?}
?? ??? ?c. 定义SEI的实现类:
?? ??? ??? ?@WebService
?? ??? ??? ?public class HelloWSImpl implements HelloWS {
?? ??? ??? ??? ?@Override
?? ??? ??? ??? ?public String sayHello(String name) {
?? ??? ??? ??? ??? ?System.out.println("sayHello "+name);
?? ??? ??? ??? ??? ?return "hello "+name;
?? ??? ??? ??? ?}
?? ??? ??? ?}

?? ?发布:
?? ??? ?public class Server {
?? ??? ??? ?public static void main(String[] args) {
?? ??? ??? ??? ?//客户端发送web service请求的url
?? ??? ??? ??? ?String address = "http://192.168.1.104/ws_server/helloWS";
?? ??? ??? ??? ?//处理请求的SEI对象
?? ??? ??? ??? ?HelloWS helloWS = new HelloWSImpl();
?? ??? ??? ??? ?//发布web service
?? ??? ??? ??? ?Endpoint.publish(address,helloWS);
?? ??? ??? ??? ?System.out.println("发布web service成功!");
?? ??? ??? ?}
?? ??? ?}
②. 客户端
?? ?1. eclipse Web Service浏览器
?? ??? ?a. 查看Web Service所对应的WSDL文档:工程url?wsdl
?? ??? ?b. 使用eclipse访问
?? ??? ??? ?请求体:SOAP Request Envelope
?? ??? ??? ??? ?<soapenv:Envelope>
?? ??? ??? ??? ??? ?<soapenv:Body>
?? ??? ??? ??? ??? ??? ?<q0:sayHello>
?? ??? ??? ??? ??? ??? ??? ?<arg0>tt</arg0>
?? ??? ??? ??? ??? ??? ?</q0:sayHello>
?? ??? ??? ??? ??? ?</soapenv:Body>
?? ??? ??? ??? ?</soapenv:Envelope>
?? ??? ??? ?响应体:SOAP Response Envelope
?? ??? ??? ??? ?<S:Envelope>
?? ??? ??? ??? ??? ?<S:Body>
?? ??? ??? ??? ??? ??? ?<ns2:sayHelloResponse xmlns:ns2="http://ws.java.atguigu.net/">
?? ??? ??? ??? ??? ??? ??? ?<return>hello tt</return>
?? ??? ??? ??? ??? ??? ?</ns2:sayHelloResponse>
?? ??? ??? ??? ??? ?</S:Body>
?? ??? ??? ??? ? </S:Envelope>
?? ?2. 编码实现
?? ??? ?a. 创建客户端java应用
?? ??? ?b. 在应用的src下执行cxf的命令生成客户端代码:
?? ??? ??? ?wsimport -keep http://192.168.1.104/ws_server/helloWS?wsdl
?? ??? ?c. 编写客户端调用的测试代码,执行:
?? ??? ??? ?public class Client {
?? ??? ??? ??? ?public static void main(String[] args) {
?? ??? ??? ??? ??? ?//创建SEI的工厂对象
?? ??? ??? ??? ??? ?HelloWSImplService factory = new HelloWSImplService();
?? ??? ??? ??? ??? ?//得到一个SEI实现类对象
?? ??? ??? ??? ??? ?HelloWSImpl helloWS = factory.getHelloWSImplPort();
?? ??? ??? ??? ??? ?//调用SEI的方法,此时才去发送web Service请求,并得到返回结果
?? ??? ??? ??? ??? ?String result = helloWS.sayHello("Tom");
?? ??? ??? ??? ??? ?System.out.println(result);
?? ??? ??? ??? ?}
?? ??? ??? ?}

//资料来源于开源的网上,只作整理方便增强自身技能。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读