WebService入门
webservice 的概念,解决什么问题?webservice 就是一个应用程序,它提供一种通过web 方式访问的api. webservice 中的一些概念 发布服务:package cn.itcast.server;
import javax.xml.ws.Endpoint;
public class PublishServer {
/** * @param args */
public static void main(String[] args) {
//java jdk 提供一个自带的类可以将java 应用程序发布成webservice
/** * 1,提供服务对外的访问地址 * 2,提供服务的类的对象... */
Endpoint.publish("http://10.129.69.114:9999/helloService",new HelloService());
}
}
被发布的类package com.zj.server;
import javax.jws.WebService;
import com.zj.bean.User;
@WebService
public class HelloService {
public void doubleKill()
{
System.out.println("zj");
}
public User getUserById(int id){
User user=new User();
user.setId(id);
user.setMomo("123445");
user.setUsername("zj");
user.setWeibo("zj@sina.com.cn");
user.setWeixin("l89999");
return user;
}
}
**注意:**1,endpoint是java jdk 提供的类,用来发布webservice,所以你的jdk 版本必须在1.6.0_21之上.. 客户端:(作为客户端,怎么调用别人发布的webservice) 调用服务:我们可以通过java jdk 自带的一个命令 wsimport 根据服务端说明书(wsdl)生成本地的java 代码 我们直接操作这些java 代码,就可以调用webservice
第一种方式调用:通过wsimport 工具1:webservice explorer (通过图形化界面的方式调用webservice) 工具2:tcp/ip Monitor 可以拦截webservice客户端与webservice 服务端进行交互的整个过程以及数据传输的格式 代码 package com.zj.clent;
import com.zj.server.HelloService;
import com.zj.server.HelloServiceService;
public class InvokeHelloService {
public static void main(String[] args) {
HelloServiceService helloServiceService=new HelloServiceService();
HelloService helloService=helloServiceService.getHelloServicePort();
helloService.doubleKill();
}
}
获得返回值 package com.zj.clent;
import com.baidu.google.soso.so.HelloService;
import com.baidu.google.soso.so.HelloServiceService;
import com.baidu.google.soso.so.User;
public class WsimportInvoke {
public static void main(String[] args) {
HelloServiceService helloServiceService=new HelloServiceService();
HelloService helloService=helloServiceService.getHelloServicePort();
User user=helloService.getUserById(1);
System.out.println(user.getMomo());
}
}
第二种方式调用:通过java jdk 自带的一个类URLConnect(可以发送一个http 请求) 原理:我们可以通过URLConnect 这个对象,发送一个http 请求,往webservice 服务端 传送xml 格式的数据, package com.zj.clent;
import java.io.IOException;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
public class URLConnectionInvoke {
public static void main(String[] args) throws IOException {
URL url=new URL("http://10.129.69.114:9999/helloService");
HttpURLConnection connection=(HttpURLConnection) url.openConnection();
connection.setDoInput(true); //要往服务器接收
connection.setDoOutput(true); //要往服务器传送数据,必须设置为ture
connection.setRequestProperty("Content-Type","text/xml;charset=utf-8");
connection.setRequestMethod("POST");
OutputStream outputStream=connection.getOutputStream();
//outputStream.write(b);
}
}
第三种方式调用:通过客户端编程的方式调用 webservice 我们需要通过java jdk 自带的类 Service ,
package com.zj.clent;
import java.net.MalformedURLException;
import java.net.URL;
import javax.xml.namespace.QName;
import javax.xml.ws.Service;
import com.baidu.google.soso.so.HelloServiceService;
public class ServiceInvoke {
public static void main(String[] args) throws MalformedURLException {
URL url=new URL("http://10.129.69.114:9999/helloService?wsdl");
//1.命名空间2.服务名称
QName qName=new QName("http://server.zj.com/","HelloServiceService");
Service service=Service.create(url,qName);
//获取接口类型
HelloService hs=service.getPort(new QName("http://server.zj.com/","HelloServicePort"),HelloService.class);
hs.doubleKill();
}
}
/** 1,调用互联网上手机号码归属地查询的服务 第四种调用方式:通过ajax 去调用webservice xmlhttpRequest 对象时浏览器自带的一个对象,可以通过此对象发送一个http 请求,传送xml 格式的数据到服务端 (模拟soap 协议…) 由于使用ajax – js调用web服务完成不同于使用java代码调用。所以,必须要对SOAP文件非常的了解。 webservice 加深:通过webservice 的客户端与服务端的几种调用方式,通过tcp ip/monitor 监控webservice 请求的过程 拦截请求的数据,对数据进行分析… 理解wsdl 服务的说明书:我们可以通过修改注解来修改wsdl 服务说明书的描述。 @WebService
(
targetNamespace="www.baidu.com",serviceName="HelloServicePortType",portName="ServicePortType"
)
修改wsdl的内容,如命名空间,服务名等 修改wsdlpublic
@WebResult(name="date")
String getDate(
@WebParam(name="date")
String date){
DateFormat dateFormat=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
return dateFormat.format(new Date());
}
WebService和Web服务器有什么区别呢?我们可以把WebService看作是Web服务器上应用;反过来说,Web服务器是WebService运行时所必需的容器。这就是它们的区别和联系。 使用JDK1.6发布的简单Web服务,其内部其实是使用Socket实现。可以查看:SUN公司未对外公布的API类com.sun.xml.internal.ws.transport.http.server. ServerMgr获知,请使用反编译工具。 WebService的特点 WebService通过HTTP POST方式接受客户的请求 WebService与客户端之间一般使用SOAP协议传输XML数据. 它本身就是为了跨平台或跨语言而设计的 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |