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 的使用的更多相关文章

  1. webService

    什么是webService WebService,顾名思义就是基于Web的服务.它使用Web(HTTP)方式,接收和响应外部系统的某种请求.从而实现远程调用.  1:从WebService的工作模式上 ...

  2. 开始webservice了

    一.WebService到底是什么 一言以蔽之:WebService是一种跨编程语言和跨操作系统平台的远程调用技术. 所谓跨编程语言和跨操作平台,就是说服务端程序采用java编写,客户端程序则可以采用 ...

  3. Spring WebService入门

    Web service是一个平台独立的,低耦合的,自包含的.基于可编程的web的应用程序,可使用开放的XML(标准通用标记语言下的一个子集)标准来描述.发布.发现.协调和配置这些应用程序,用于开发分布 ...

  4. 浅谈跨域以及WebService对跨域的支持

    跨域问题来源于JavaScript的同源策略,即只有 协议+主机名+端口号 (如存在)相同,则允许相互访问.也就是说JavaScript只能访问和操作自己域下的资源,不能访问和操作其他域下的资源. 在 ...

  5. 浅谈WebService的版本兼容性设计

    在现在大型的项目或者软件开发中,一般都会有很多种终端, PC端比如Winform.WebForm,移动端,比如各种Native客户端(iOS, Android, WP),Html5等,我们要满足以上所 ...

  6. Atitit webservice发现机制 WS-Discovery标准的规范attilax总结

    Atitit webservice发现机制 WS-Discovery标准的规范attilax总结 1.1. WS-Discovery标准1 1.2. 一.WS-Discovery1 1.2.1.   ...

  7. java调用CXF WebService接口的两种方式

    通过http://localhost:7002/card/services/HelloWorld?wsdl访问到xml如下,说明接口写对了. 2.静态调用 // 创建WebService客户端代理工厂 ...

  8. VS2010编写WebService与在IIS的发布<之简单讲解>

    工具VS2010,window环境win7 一:Webservice的创建与方法查看调用 1.新建空web应用程序项目 2.新建web服务 3.自动生成 4.直接跑起来,可以看到有2个方法 5.点击H ...

  9. webService学习之路(三):springMVC集成CXF后调用已知的wsdl接口

    webService学习之路一:讲解了通过传统方式怎么发布及调用webservice webService学习之路二:讲解了SpringMVC和CXF的集成及快速发布webservice 本篇文章将讲 ...

  10. webService学习之路(二):springMVC集成CXF快速发布webService

    继上一篇webService入门之后,http://www.cnblogs.com/xiaochangwei/p/4969448.html ,现在我将我周六在家研究的结果公布出来 本次集成是基于之前已 ...

随机推荐

  1. 在Windows IoT上生成和识别二维码

    在Windows IoT生成和识别二维码,实际上由于是UWP上实现,所以,理论上,这些生成和识别二维码的方法也可以在其它平台上运行. 关于二维码的生成有很多库可以实现,比如QRCoder,这个库可以在 ...

  2. 手机控制PPT good

    以前做了一个小东西,通过手机来控制PPT的翻页,最大化和最小化,东西很简单,近期整理电脑发现了拿来和大家分享一下 主要分为两个部分,客户端和服务器 客户端实现 当初考虑到跨平台的特性就选择了qt来写的 ...

  3. 一次C#和C++的实际应用性能比较(C++允许我们使用任何手段来提高效率,只要愿意做出足够的努力)

    05年时,在微软的Rico Mariani做了一次实际应用的C#和C++的性能比较.事情起源于微软著名的元老Raymond Chen(在下敬仰的超级牛人)用C++写了一个英汉词典程序,来描述讲解优化C ...

  4. 图形界面编程成就了C++

    听有人说C#.VB比C++好是因为做界面方便还算傻得可爱,听有人说用C++做数值计算而不屑于做界面可就对不起咱C++的恩人了.这我可要说道说道. 想当年C++刚出江湖,名门出身,自立门派,想抢Obje ...

  5. C#每天进步一点--引用类型和值类型

    在刚参加工作面试时,我们经常会遇到有关值类型和引用类型的问题,你回答的怎么样直接影响你在别人心目中的印象,你回答的不好说明你对C#没有深入的了解学习,今天我带大家回顾下C#中的引用类型和值类型. CL ...

  6. hadoop之hive基本操作

    -- 清空表中的数据,保留表结构 truncate table tmp_userid; '); -- 搜索库或表支持正则表达式 show tables 'sa*'; show tables in ba ...

  7. 30212Java_数组

    数组 1.综述 数组是相同类型数据的有序集合.数组描述的是相同类型的若干个数据,按照一定的先后次序排列组合而成. 其中,每一个数据称作一个元素,每个元素可以通过一个索引(下标)来访问它们. 数组的三个 ...

  8. 实战Java的反射机制

    众所周知,Java要调用某个对象的方法首先需要对象实例化后才能调用. 而实例化对象常见的就是new执行和spring(DI)的依赖注入了. Spring的DI其实就是以反射作为最基础的技术手段. 一. ...

  9. Spring 注解编程之模式注解

    Spring 框架中有很多可用的注解,其中有一类注解称模式注解(Stereotype Annotations),包括 @Component, @Service,@Controller,@Reposit ...

  10. Hive 学习之路(六)—— Hive 视图和索引

    一.视图 1.1 简介 Hive 中的视图和RDBMS中视图的概念一致,都是一组数据的逻辑表示,本质上就是一条SELECT语句的结果集.视图是纯粹的逻辑对象,没有关联的存储(Hive 3.0.0引入的 ...