AutoCAD 3DMAX C语言 Pro/E UG JAVA编程 PHP编程 Maya动画 Matlab应用 Android
Photoshop Word Excel flash VB编程 VC编程 Coreldraw SolidWorks A Designer Unity3D
 首页 > JAVA编程

向web服务传递文件

51自学网 2015-09-03 http://www.51zixue.net

  Java 开发人员可以通过 JAX-RPC(基于 XML 的 RPC 的 Java API)和 SAAJ(用于 Java 的带附件 SOAP API)使用附件。不要让缩写词 SAAJ 欺骗了您:JAX-RPC 支持附件。JAX-RPC 和 SAAJ 的区别在于抽象的层次而不是功能。

  JAX-RPC 是一种高层次的 API,比 SAAJ 更抽象。它在 RMI 层背后隐藏了大部分面向 SOAP 协议的问题。开发人员处理的是 Java 对象,预处理程序将其转成 SOAP 节点。JAX-RPC 使用java.awt.Image 和 javax.activation.DataHandler 类表示附件。

  SAAJ 更接近于协议。使用 SAAJ 创建 SOAP 消息和 JAX-RPC 相比要做更多的工作(而且没有提供到 WSDL 的自动链接),因此多数情况您可能更愿意使用 JAX-RPC。但是为了说明附件到底是如何工作的,由于它的底层特性 SAAJ 更加合适。清单 2 是一个带有附件的 SOAP 请求。该请求要求服务器改变一个图片的大小,因为图片很大,使用附件更有效。

       清单 2. 附件参数

  

以下是引用片段:
POST /ws/resize HTTP/1.0
  Content-Type: multipart/related; type="text/xml";
  start="";
  boundary="----=_Part_0_7145370.1075485514903"
  Accept: application/soap+xml, multipart/related, text/*
  Host: localhost:8080
  SOAPAction: ""
  Content-Length: 1506005
  ------=_Part_0_7145370.1075485514903
  Content-Type: text/xml; charset=UTF-8
  Content-Transfer-Encoding: binary
  Content-Id: 
  
   
  xmlns:xsd="http://www.w3.org/2001/XMLSchema"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  
   
  soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
  xmlns:ps="http://psol.com/2004/ws/resize"
  xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/">
  
  20
  
  
  
  ------=_Part_0_7145370.1075485514903
  Content-Type: image/jpeg
  Content-Transfer-Encoding: binary
  Content-Id: 
  note: binary data deleted...
  ------=_Part_0_7145370.1075485514903--
  清单 3 示范了该 SOAP 请求的创建。该请求要求服务器改变图像的大小。过程如下:

  1:通过工厂创建 SOAP 连接和 SOAP 消息对象。

  2:从消息对象中检索消息体(中间步骤:检索 SOAP 部分和信封)。

  3:创建一个新的 XML 元素表示请求并设置编码方式。

  4:创建附件并使用 DataHandler 对象初始化。

  5:创建另外的元素表示两个参数(source 和 percent)。

  6:通过添加 href 属性把附件与第一个元素关联。附件通过 cid(content-id)URL 引用。

  7:直接把第二个参数的值设成文本并调用服务。

  服务使用改变了大小的图像(同样作为附件)作为应答。检索返回的图像之前可以测试 SOAP 错误码(表示一个错误)。如果没有错误,则作为文件检索附件并处理。

 
 
说明
:本教程来源互联网或网友上传或出版商,仅为学习研究或媒体推广,51zixue.net不保证资料的完整性。
 

上一篇:Spring 2.X 中AOP的使用浅析  下一篇:春天来啦:Spring框架概述