webService 的使用
webService
Web service是一个平台独立的,低耦合的,自包含的、基于可编程的web的应用程序,可使用开放的XML(标准通用标记语言下的一个子集)标准来描述、发布、发现、协调和配置这些应用程序,用于开发分布式的互操作的应用程序。
为什么要使用webService
概念理解 SOAP WSDL
SOAP (Simple Object Access Protocol):简单对象访问协议
- SOAP作为一个基于XML语言的协议用于在网上传输数据。
- SOAP = 在HTTP的基础上+XML数据。
- SOAP是基于HTTP的。
- SOAP的组成如下:
- Envelope – 必须的部分。以XML的根元素出现。
- Headers – 可选的。
- Body – 必须的。在body部分,包含要执行的服务器的方法。和发送到服务器的数据。
WSDL Web服务描述语言
WSDL(WebService Description Language):web 服务描述语言
就是一个xml文档,用于描述当前服务的一些信息(服务名称、服务的发布地址、服务提供的方法、方法的参数类型、方法的返回值类型等)
调用网络上提供的WEBService —— 请求示例 获取手机号码归属地
http://www.webxml.com.cn/zh_cn/index.aspx 提供了一些webService服务
1.服务地址
http://ws.webxml.com.cn/WebServices/MobileCodeWS.asmx
2.查看wsdl文档
http://ws.webxml.com.cn/WebServices/MobileCodeWS.asmx?wsdl
3.通过jdk自带的工具 解析wsdl文档生成对应的java代码
wsimport -s . http://ws.webxml.com.cn/WebServices/MobileCodeWS.asmx?wsdl
命令:wsimport -s . [wsdl URL]
图片点击可以放大
新建普通java工程,将生成的代码copy到项目中,书写测试类方法,调用远程webService方法
/**
* 远程调用WebService
*
* @author pyfysf
*
*/
public class TestPhoneAddress {
@Test
public void getPhoneAddress() {
MobileCodeWS mobileCodeWS = new MobileCodeWS();
MobileCodeWSSoap soap = mobileCodeWS.getMobileCodeWSSoap();
String mobileCodeInfo = soap.getMobileCodeInfo("1886363", "");
System.out.println(mobileCodeInfo);
//控制台打印结果为: 1886363:山东 潍坊 山东移动全球通卡
}
}
基于jdk发布一个WebService服务
服务端编写
- 第一步:创建一个Java项目
- 第二步:创建一个类,加入Webservice注解
- 第三步:提供一个方法introduceOneself
- 第四步:在main方法中调用jdk提供的发布服务的方法
服务端完整代码:
package top.wintp.webserviceservice;
import javax.jws.WebService;
import javax.xml.ws.Endpoint;
@WebService
public class WebServiceServiceDemo {
/**
* webService提供的一个普通方法
*
* @return
*/
public String introduceOneself() {
return "pyfysf: blog is http://wintp.top";
}
public static void main(String[] args) {
String address = "http://127.0.0.1:9080/introduceOneself";
// WSDL 地址是固定的: 服务地址 + ? + wsdl
// http://127.0.0.1:9080/introduceOneself?wsdl
Object implementor = new WebServiceServiceDemo();
// 发布服务 线程堵塞 监听客户端请求
Endpoint.publish(address, implementor);
}
}
jdk中wsimport命令使用、
作用:解析wsdl文件,生成客户端本地代码
客户端编写
- 第一步:使用wsimport命令解析wsdl文件生成本地代码
- WSDL: wsimport -s . http://127.0.0.1:9080/introduceOneself?wsdl
- 第二步:通过本地代码创建一个代理对象
- 第三步:通过代理对象实现远程调用
服务端完整代码:
public class Demo {
@Test
public void introduceOneself() {
WebServiceServiceDemoService ws = new WebServiceServiceDemoService();
// 创建客户端的代理对象
WebServiceServiceDemo wsPort = ws.getWebServiceServiceDemoPort();
String introduceOneself = wsPort.introduceOneself();
System.out.println(introduceOneself);
// 控制台打印结果: pyfysf: blog is http://wintp.top
}
}
webService 的使用的更多相关文章
- webService
什么是webService WebService,顾名思义就是基于Web的服务.它使用Web(HTTP)方式,接收和响应外部系统的某种请求.从而实现远程调用. 1:从WebService的工作模式上 ...
- 开始webservice了
一.WebService到底是什么 一言以蔽之:WebService是一种跨编程语言和跨操作系统平台的远程调用技术. 所谓跨编程语言和跨操作平台,就是说服务端程序采用java编写,客户端程序则可以采用 ...
- Spring WebService入门
Web service是一个平台独立的,低耦合的,自包含的.基于可编程的web的应用程序,可使用开放的XML(标准通用标记语言下的一个子集)标准来描述.发布.发现.协调和配置这些应用程序,用于开发分布 ...
- 浅谈跨域以及WebService对跨域的支持
跨域问题来源于JavaScript的同源策略,即只有 协议+主机名+端口号 (如存在)相同,则允许相互访问.也就是说JavaScript只能访问和操作自己域下的资源,不能访问和操作其他域下的资源. 在 ...
- 浅谈WebService的版本兼容性设计
在现在大型的项目或者软件开发中,一般都会有很多种终端, PC端比如Winform.WebForm,移动端,比如各种Native客户端(iOS, Android, WP),Html5等,我们要满足以上所 ...
- Atitit webservice发现机制 WS-Discovery标准的规范attilax总结
Atitit webservice发现机制 WS-Discovery标准的规范attilax总结 1.1. WS-Discovery标准1 1.2. 一.WS-Discovery1 1.2.1. ...
- java调用CXF WebService接口的两种方式
通过http://localhost:7002/card/services/HelloWorld?wsdl访问到xml如下,说明接口写对了. 2.静态调用 // 创建WebService客户端代理工厂 ...
- VS2010编写WebService与在IIS的发布<之简单讲解>
工具VS2010,window环境win7 一:Webservice的创建与方法查看调用 1.新建空web应用程序项目 2.新建web服务 3.自动生成 4.直接跑起来,可以看到有2个方法 5.点击H ...
- webService学习之路(三):springMVC集成CXF后调用已知的wsdl接口
webService学习之路一:讲解了通过传统方式怎么发布及调用webservice webService学习之路二:讲解了SpringMVC和CXF的集成及快速发布webservice 本篇文章将讲 ...
- webService学习之路(二):springMVC集成CXF快速发布webService
继上一篇webService入门之后,http://www.cnblogs.com/xiaochangwei/p/4969448.html ,现在我将我周六在家研究的结果公布出来 本次集成是基于之前已 ...
随机推荐
- MySQL操作详解
创建并使用数据库 查看服务器上的数据库:SHOW DATABASES; 创建数据库:CREATE DATABASE <数据库名>; 指明使用何数据库:USE <数据库名> 创建 ...
- 我写的一个Qt 显示二维码( QR Code)的控件(可以去掉对 libpthread 的依赖,而且编译出的库文件可以在 vc2010 的release 模式下使用)
最近一个项目需要显示二维码,所以花了点时间(只用了一个晚上,写的很不完善),写了个显示二维码的控件.当然这个控件用到了些开源的代码,比如qrencode,所以我也打算把我的代码开源. 我的代码参考了 ...
- MacOS X编译OpenSceneGraph
本文主要记录在MacOS X上编译OpenSceneGraph,方便日后查阅.所使用的环境如下: MacOS X 10.10 Yosemite XCode 6.3.2 CMake 3.3.0 Open ...
- QSocket 总体设计框架说明(观赏)
QSocket 是 QDAC 开源组件的一个重要的组成部分,终于要开始开工了,为了方便大家了解 QSocket,对 QSocket 的总体设计的一些想法,我在这里给大家简要的描述一下. 首先,QSoc ...
- 访问类的私有属性(RTTI和模仿类2种方法)
如何访问类的私有属性? 下面以 TPathData 为例,它有一个私有属性 PathData,储存了每一个曲线点,但一般无法修改它,需要利用下面方法,才能访问修改(若有更好的方法,歡迎分享): 一.利 ...
- 简单封装 Delphi 的 DirectX类
var CreatorRenderer : TCreatorRenderer; Form1: TForm1; 窗体代码: {$R *.dfm} procedure TForm1.FormCreate ...
- CPU多核控速
初学者很多对自己开发的软件使用硬件资源的时候并不注意,造成写出的东西不是很满意. 一般有两种情况: 1.写的都是同步单线程任务,不管你电脑有多少个核都不关我事 我就用你1个核所以不管怎么样都不会把CP ...
- Memcached在Linux系统下的安装和PHP开启 Memcached的 扩展 超级解决方案
[项目背景]:阿里云ECS服务器,Linux(centos7.2 64位),环境部署使用的是阿里云一键安装包(LAMP)等 [项目需求]:linux安装memcached 和php开启Memcache ...
- Python基础,day3
本节内容 1. 函数基本语法及特性 2. 参数与局部变量 3. 返回值 嵌套函数 4.递归 5.匿名函数 6.函数式编程介绍 7.高阶函数 8.内置函数 1.函数基本语法及特性 如何不重复代码,其实很 ...
- DHCP服务部署流程
为某一局域网部署DHCP [root@dhcp ~]# yum install -y dhcp[root@dhcp ~]# rpm -ql dhcp/usr/sbin/dhcpd:dhcp服务进程 / ...