首先, 在java中, 如何通过http请求发送XML呢?
据我所知,有两种写法:一种是使用httpClient(需要httpGet或httpPost对象配合,有篇博文中已经提到),另一种写法是使用URL(先调用openConnection()方法,然后可以设置请求头setRequestProperty(),调用getOutputStream()方法获取OutputStream,然后用输出流将要发送的xml实体文件写出去)。接收XML的写法,一般都是用request先获取输入流,再将输入流读到byte[]中,再转换为字符串,最后再用dom4j等解析XML的方法解析出来各节点的数据。
有了这样的知识准备,我就接着了解Webservice了。
看了一篇博文,http://url.cn/EZjm82,才知道Webservice就是传说中的云,把一个Web应用当成一种服务来看,能够接收来自网络的请求,经过解析和处理,返回数据,响应请求。而这请求和响应的过程中,数据都是使用XML进行传输的,被成为SOAP消息。SOAP消息就是SOAP协议规定的消息格式,看了http://url.cn/Ecrkwp这篇文章,我了解到SOAP协议是基于Http协议的,中间有一个映射关系的存在:我个人理解,客户端在发送Webservice请求时,就是将soap消息(遵循soap的xml文件)作为发送的http请求消息的实体内容(请求头中的Content-Type=application/soap+xml;charset=UTF-8),soap消息中封装了要调用的是哪一个操作,肯定也封装了所需的参数;同理,Webservice服务端给客户端发送的响应消息也会被封装成一个soap消息,该消息会作为http响应消息的实体内容。
一个Webservice如何被使用呢?需要有个说明文档,用来描述该Webservice的使用说明——WSDL。
它都描述了什么呢?
看了网上一个视频,总结得挺好:
What——该Webservice包含了哪些操作
How——该Webservice操作应该怎样调用
Where——该Webservice的服务地址
WebService的技术核心?三个
soap,
wsdl(一个XML格式文档,用以描述服务端口访问方式和使用协议的细节。通常用来辅助生成服务器和客户端代码及配置信息),
uddi(一个用来发布和搜索WEB服务的协议,应用程序可借由此协议在设计或运行时找到目标WEB服务)
这些标准由这些组织制订:W3C负责XML、SOAP及WSDL;OASIS负责UDDI。
webservice三种最普遍的实现方式是:
远程过程调用(RPC)
面向服务架构(SOA)
表述性状态转移(REST)
(该段文字参考http://blog.csdn.net/zhouyong0/article/details/7734810)
原来,小毛提到的R他用PC实现一个自定义的Webservice,其实只是Webservice的一种实现方式I啊。这个回头再了解吧
另外,还需要研究一下soap消息的结构,如何用代码实现对该消息的解析呢