026 WebService入门 - bos

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了026 WebService入门 - bos相关的知识,希望对你有一定的参考价值。

 

一、什么是WebService

1.Web service是一个平台独立的,低耦合的,自包含的、基于可编程的web的应用程序,
可使用开放的XML标准来描述、发布、发现、协调和配置这些应用程序,
用于开发分布式的互操作的应用程序。

2.简单理解就是两个系统之间的远程调用技术

3.并且WebService之间的调用可以实现跨语言调用,因为调用使用的是http协议,传输的数据格式为xml

二、调用网络上的WebService服务

1.打开命令行 进入E:\\test,输入wsimport -s . http://ws.webxml.com.cn/WebServices/MobileCodeWS.asmx?wsdl

2.此时,该目录会生成.class文件和.java文件,删除class文件,把java文件复制到一个简单的java项目

3.编写以下调用代码

/**
* 远程调用Web Service服务
*/
public class App {

public static void main(String[] args) {
MobileCodeWS ss = new MobileCodeWS();
MobileCodeWSSoap soap = ss.getMobileCodeWSSoap();
String res = soap.getMobileCodeInfo("15659789999", null);
System.out.println(res);
}
}

三、WebService介绍

WebService调用是基于HTTP协议的
调用时传输的数据是XML格式的,因此可以实现跨语言调用

四、HTTP介绍

HTTP请求格式如下:
<request-line> //请求行
<headers> //请求头
<blank line> //空行
[<request-body>] //请求体,不一定有

在HTTP请求中,第一行必须是一个请求行,用来说明请求类型(get、post)、要访问的资源(url)以及使用的HTTP版本
紧接着是一个首部小节,用来说明服务器要使用的附加信息,在首部之后是一个空行,再此之后可以添加任意的其他数据[称之为主体(body)]

POST /getinfo.action HTTP/1.1
HOST www.hao.com
UserAgent ...
contentType application/x-www-form-urlencoded
//这里有一个空行
id=001&name=hao&age=20

五、SOAP概念

SOAP(Simple Object Access Protocal),简单对象访问协议
SOAP是基于HTTP的,属于HTTP的范畴

POST /getinfo.action HTTP/1.1
HOST www.hao.com
UserAgent ...
Content-Type text/xml; charset=utf-8
Connection keep-alive
//这里有一个空行

<xml数据>
SOAP对传输的XML进行了约束,同时规定了请求和响应的XML数据格式,envelop和body是固定的
<envelop>
<body>
<!--方法名-->
<getInfo>
<id>01</id>
<getInfo>
<body>
</envelop>


六、WSDL概念

WSDL(WebService Description Language):Web服务描述语言
就是一个xml文档,用于描述当前服务的一些信息(服务名称、服务发布地址、服务提供的方法、方法的参数类型、方法的返回值类型)
服务名字:wsdl:service
提供的方法:wsdl:operation
WSDL相当于Web服务的使用说明书

七、WebService程序

简单的网络应用使用单一的语言写成,它的唯一外部程序就是他所以来的数据库
复杂的网络应用,一般对外公布Service层,其他各个终端共同调用

八、基于JDK1.7发布一个简单的WebService服务

@WebService
public class HelloService {

public String sayHello(String name){
System.out.println("服务端的sayHello方法被调用了...");
return "hello,"+name;
}

public static void main(String[] args) {
String address = "http://192.168.1.2:8989/hello";
//对应的wsdl为http://192.168.1.2:8989/hello?wsdl
Object implementor = new HelloService();
Endpoint.publish(address, implementor);

}
}

九、使用JDK的wsimport命令生成本地代码调用WebService服务

wsimport命令用于解析wsdl文件,生成客户端本地代码
-s用于指定目标代码放置在哪
-p用于指定目标的报名,若不指定则和服务器的包名一致
无论服务端的代码使用什么语言写的,都在客户端生成Java代码
wsimport -s . -p com.hao.webservice http://192.168.1.2:8989/hello?wsdl

十、客户端调用代码

/**
* 1.通过wsimport命令解析wsdl文件生成本地代码
* 2.通过本地代码创建一个代理对象
* 3.通过代理对象实现远程调用
*/
public class App {

public static void main(String[] args) {
HelloServiceService ss = new HelloServiceService();
//创建客户端代理对象用于远程调用
HelloService proxy = ss.getHelloServicePort();
System.out.println(proxy.sayHello("小明"));
}
}

 













































































































以上是关于026 WebService入门 - bos的主要内容,如果未能解决你的问题,请参考以下文章

webservice有关application/xop+xml的异常

Web Service入门简介(一个简单的WebService示例)

webService简单入门

WebService入门

Axis2 webservice入门--Webservice的发布与调用

WebService入门实例教程