动态网站制作指南 [  QQ表情  ]
[ 投票调查 ]
[ 企业邮箱 ]
[ 网站空间 ]
网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
ASP源码 | .Net源码 | PHP源码 | JSP源码 | JAVA源码 | CGI源码 | VB源码 | C++源码 | Delphi源码 | PB源码 | VF源码 | 汇编 | 服务器
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > Java教程
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
网络编程:ASP教程,ASP.NET教程,PHP教程,JSP教程,C#教程,数据库,XML教程,Ajax,Java,Perl,Shell,VB教程,Delphi,C/C++教程,软件工程,J2EE/J2ME,移动开发
文章搜索服务
邮件订阅
输入你的邮件地址,
你将不会错过任何关于:
[ Java教程 ]的信息

本月文章推荐
.两种特殊的Java容器类List和Set分.
.Java与XML(三)WEB上的读写应用.
.精通Hibernate之映射继承关系一(.
.标准的web.xml.
.Java Servlet 编程及应用之Cooki.
.big 方法.
.310-025 Braindumps.
.企业JavaBean(EJB) 3.0 全新体验.
..NET实现的农历功能及其代码分享.
.用 One-JAR 简化应用程序交付.
.java制作欢迎屏幕123.
.使用JDOM操作XML系列文章三 平面.
.java技术分析.
.java设计模式之Chain of Respons.
.Struts实时生成Excel文件下载.
.实现RSS.
.走出abstract class与interface的.
.JAVA中:关于++和--.
.Java Servlet 编程及应用之三.
.Struts生成Word下载.

用SAAJ1.2发送接收二进制Web服务内容(二)

发表日期:2008-1-5 |



  带有附件的SOAP分析
  带有附件的SOAP信息并没有给SOAP增加新的特征。 确切的说,它定义了如何利用在SOAP信息中MIME类型来定义附件, 并且还定义了如何引用在SOAP体(SOAP Body)中的那些附件。
  MIME类型的复合块/关联(multipart/related)特性能定义由多部分组成的一个文档。带有附件的SOAP信息一定要符合这样的复合块/关联(multipart/related)的MIME类型。下面的例子展示了一个复合块/关联的 SOAP 信息,它被绑定到到 HTTP 协议,带有两个附件:
  
  POST /propertyListing HTTP/1.1
  Host: www.realproperties.com
  Content-Type: Multipart/Related; boundary=MIME_boundary; type=text/XML; start=""
  Content-Length: NNNN
  
  --MIME_boundary
  Content-Type: text/xml; charset=UTF-8
  Content-Transfer-Encoding: 8bit
  Content-ID:
  
  
  
  
  
         xmlns:realProperty="http://schemas.realhouses.com/listingSubmission";>
  
      Really Nice Homes, Inc.
     Add
     
      1234 Main St
      Pleasantville
      CA    
      94323
     

     
       250000
     

  
     
     
  
    

  
  
  
  
  --MIME_boundary
  Content-Type: image/jpeg
  Content-ID:
  
  ....JPEG DATA .....
  --MIME_boundary
  Content-Type: image/jpeg
  Content-ID:
  
  ....JPEG DATA .....
  --MIME_boundary--
  
  上述的复合块信息包含一系列的MIME头和相关的数据。文件的底层是SOAP体(SOAP Body)。 因为SOAP体只包含XML数据,整个信息的MIME类型是本文/xml(text/xml)类型 。 在SOAP封套(SOAP envelope)后面是二个附件,每个附件都包含一个连同信息一起发送的图像文件。
  用内容ID(Content ID)来识别每一个附件。W3C 备忘录答应用内容ID或内容位置来引用附件,但是它优先选择前者。这样的一个内容ID作为统一资源标志符URI(Uniform Resource Identifier)引用给附件;SOAP 1.1的编码规则定义了如何通过URI来引用SOAP信息里面的任何资源,不仅仅是引用XML( 参考SOAP1.1第5节资源)。当SOAP处理机处理信息时,它会解析这些URI引用。在上述的例子中,SOAP处理器把元素frontImage关联到内容ID为property1234_front.jpeg@realhouses.com的数据段中。
  
  创建并发送带有附件的SOAP信息
  SAAJ能让你创建并编辑SOAP信息的任何部份, 包括附件。 大多数的SAAJ以抽象类和接口为基础,所以每个供给商都能实现它自己的SAAJ产品。Sun Microsystems公司的参考实现附在JWSDP包(Java Web Services Developer Pack)中。
  因为SOAP信息只是XML文档的一种非凡形式,JAAS在DOM(document.nbspObject Model)API的基础上处理XML。大多数的SOAP信息组件派生自 avax.xml.soap.Node接口, 而这个接口又是org.w3c.dom.Node的子类。SAAJ继续了Node来添加SOAP样式的结构。 举例来说,这个非凡的Node, SOAPElement,代表了一个SOAP信息元素。
  SAAJ依靠于接口和抽象类的直接结果是:你要通过工厂方法(factory methods)来完成大多数与SOAP相关的工作。 要把你的程序链接到SAAJ API,你首先要创建一个来自工厂方法SOAPConnectionFactory的链接SOAPConnection。要创建和编辑SOAP信息,你可以初始化MessageFactory和SOAPFactory。MessageFactory能让你产生SOAP信息,而 SOAPFactory则提供方法产生SOAP信息的各个部份:
  
  SOAPConnectionFactory spConFactory = SOAPConnectionFactory.newInstance();
  SOAPConnection con = spConFactory.createConnection();
  SOAPFactory soapFactory = SOAPFactory.newInstance();
  
  把这些工具用在适当的位置,你就可以创建一个 SOAP 信息,在前面的例子中,来自房产代理的客户可以使用这些信息发送项目表更新给一个网站入口。
  SAAJ 提供了几个方法来产生一个新的 SOAP 信息。 下面例子演示了用最简单的方法来创建一个有封套(envelope)的空白SOAP信息,这个封套还带有头(heade)和体(body)。假如你在这个信息中不需要SOAP头(SOAP header),那么你可以将这个元素从信息中删除:
  
  SOAPMessage message = factory.createMessage();
  SOAPHeader header = message.getSOAPHeader();
  header.detachNode();
  
  把 XML 结构加入信息也是直接了当的:
  
  SOAPBody body = message.getSOAPBody();
  
  Name listingElementName = soapFactory.createName(
    "propertyListing", "realProperty",
    "http://schemas.realhouses.com/listingSubmission";);
  SOAPBodyElement listingElement = body.addBodyElement(listingElementName);
  
  Name attname = soapFactory.createName("id");
  listingElement.addAttribute(attname, "property_1234");
  
  SOAPElement listingAgency = listingElement.addChildElement("listingAgency");
  listingAgency.addTextNode("Really Nice Homes, Inc");
  
  SOAPElement listingType = listingElement.addChildElement("listingType");
  listingType.addTextNode("add");
  
  SOAPElement propertyAddress = listingElement.addChildElement("propertyAddress");
  SOAPElement street = propertyAddress.addChildElement("street");
  street.addTextNode("1234 Main St");
  SOAPElement city = propertyAddress.addChildElement("city");
  city.addTextNode("Pleasantville");
  SOAPElement state = propertyAddress.addChildElement("state");
  state.addTextNode("CA");
  SOAPElement zip = propertyAddress.addChildElement("zip");
  zip.addTextNode("94521");
  
  SOAPElement listPrice = listingElement.addChildElement("listPrice");
  listPrice.addTextNode("25000");
  
  注重,你要把属性的ID作为一个参数加入到属性列表元素(propertyListing)中。 更进一步的是,你要用QName, 或namespace来限定propertyListing元素。
  
  你可以用几种方法把附件加入到SOAP信息中。 在这一个例子中,你首先要创建元素来指示列表属性的背景图片和前景图片。它们每个都有一个href属性指明附件的内容ID:
  
  String frontImageID = "property1234_front_jpeg@realhouses.com";
  SOAPElement frontImRef = listingElement.addChildElement("frontImage");
  Name hrefAttName = soapFactory.createName("href");
  frontImRef.addAttribute(hrefAttName, frontImageID);
  
  String interiorID = "property1234_interior_jpeg@realhouses.com";
  SOAPElement interiorImRef = listingElement.addChildElement("interiorImage");
  interiorImRef.addAttribute(hrefAttName, interiorID);
  
  要方便地把需要的图像文件附加在信息中,可以使用JavaBeans Activation Framework架构里面的javax.activation.DataHandler对象。DataHandler能自动地检测传递给它的数据类型,而且它还能自动地分配适当的MIME类型给附件:
  
  URL url = new URL("file&:///eXPort/files/pic1.jpg");
  DataHandler dataHandler = new DataHandler(url);
  AttachmentPart att = message.createAttachmentPart(dataHandler);
  att.setContentId(frontImageID);
  message.addAttachmentPart(att);
  
  另一种方法,你可以把一个对象,连同正确的MIME类型一起,传递到createAttachmentPart()方法里。这个方法跟第一个方法类似。在内部,SAAJ将会寻找处理器DataContentHandler 来处理这个MIME类型。 假如它不能找一个合适的处理器,createAttachmentPart() 方法将会抛出一个IllegalArgumentException异常:
  
  URL url2 = new URL("file&:///export/files/pic2.jpg");
  Image im = Toolkit.getDefaultToolkit().createImage(url2);
  AttachmentPart att2 = message.createAttachmentPart(im, "image/jpeg");
  att2.setContentId(interiorID);
  message.addAttachmentPart(att2);
  
  这个方法的缺点集中在:它依靠于AWT中示例UI(用户界面user interface)相关的类。 在一些粗心的(服务器)设置中,这些库并没有被正确的设置。
  不管你选择什么方法来产生附件,上述的代码表示了在第一个列表里面的SOAP信息。 既然这只是一个简
上一篇:关于 Java web start 是干什么用的 人气:816
下一篇:Weblogic 下 servlet实现应用级身份认证 人气:422
浏览全部Java的内容 Dreamweaver插件下载 常用网页广告代码全集
  最新网站源码 最新软件下载
2008-10-13 爬爬思特新闻管理系统 v2.0 Beta1
2008-10-13 Pligg v9.9.5 Beta
2008-10-13 广优邮件发送系统 v2.1
2008-10-13 缤纷互动视频交友 v3.1 RC
2008-10-13 MyShop网络商城 build 081005
2008-10-13 Chyrp 超轻量级开源博客引擎 v2.
2008-10-13 162100静态(论坛/文章)系统 v2.4
2008-10-13 金博人才招聘求职网黄金版 v4.2
2008-10-13 愚人笔记 v4.0
2008-10-11 联系人分组工具 v1.1 中文破解版
2008-10-11 FaceMelter变脸 v2.0 汉化破解版
2008-10-11 PathTracker道路跟踪仪 v1.2 破解
2008-10-11 Rooms手机聊天室 v0.6.7 破解版
2008-10-11 RemoteDesktop远程桌面 v1.0 破解
2008-10-11 ProRemote远程调音台 v1.0.1 破解
2008-10-11 PicShare照片共享 v1.0.0 破解版
2008-10-11 Photogene照片编辑器 v1.5 汉化破
2008-10-11 WriteRoom共享文档 v1.0 破解版
  发表评论
姓 名: 验证码:
内 容:
站长工具:网站收录查询 | Google PR查询 | ALEXA排名查询 | CSS在线编辑器 | 广告代码 | js/vbs加密 | md5加密 | 进制转换 | UTF-8 转换工具 | Html转换js | Html转换asp | Html转换php | Html转换perl
实用工具:汉字翻译拼音 | 拼音字典 | 符号对照表 | 个税计算 | 实时汇率查询换算 | 经典小工具 | 汉字简繁转换 | 普通单位换算 | 公制单位换算 | 生辰老黄历 | 国内电话区号 | 国家代码与域名缩写 | 文字加密解密 | 健康查询 | 万年历 | 汉字横竖排版 | 手机号码查询 | 计算器 | ip搜索
业务联系 | 广告刊登 | 频道合作 | 投稿荐稿 | 联系方式 | 加入收藏 | RSS订阅
Copyright © 2000-2008 www.knowsky.com All rights reserved | 网络实名:动态网站制作指南 | 沪ICP备05001343号
ホームページ制作 不動産検索システム 求人情報
防水工事·改修工事 フットサル大会 探偵
SEO対策 中国語教室 ホームページ作成