亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

用SAAJ1.2發送接收二進制Web服務內容(二)

2019-11-18 12:52:26
字體:
來源:轉載
供稿:網友

  帶有附件的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信息。 既然這只是一個簡

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
懂色av影视一区二区三区| 欧美色视频日本高清在线观看| 精品调教chinesegay| 精品国产一区二区在线| 7777免费精品视频| 亚洲区在线播放| 亚洲一区二区自拍| 亚洲欧美日韩天堂| 久久免费视频网站| 深夜福利亚洲导航| 国内精品400部情侣激情| 精品国产电影一区| 欧美插天视频在线播放| 欧美乱妇40p| 色哟哟网站入口亚洲精品| 午夜精品视频网站| 国产精品扒开腿做爽爽爽男男| 日本亚洲精品在线观看| 亚洲精品videossex少妇| 久久久精品免费| 国产日韩综合一区二区性色av| 日韩欧美中文第一页| 国产一区二区三区在线观看视频| www.久久草.com| 91精品综合视频| 欧美激情一区二区久久久| 日本精品久久久| 日韩在线视频国产| 久久中文字幕在线视频| 色av中文字幕一区| 国产日韩视频在线观看| 欧美一级黑人aaaaaaa做受| 亚洲一级黄色片| 亚洲美女视频网| 亚洲成人教育av| 中文精品99久久国产香蕉| 国产精品99一区| 成人网页在线免费观看| 日韩在线观看成人| 国产精品久久久久秋霞鲁丝| 国产精品视频1区| 欧美日韩亚洲高清| 韩国日本不卡在线| 国产欧美久久一区二区| 亚洲性生活视频| 亚洲少妇激情视频| 国产精品普通话| 成人国产亚洲精品a区天堂华泰| 中文字幕日韩电影| 高清日韩电视剧大全免费播放在线观看| 懂色av一区二区三区| 国产精品第一视频| 成人免费淫片视频软件| 精品久久久久久久久久ntr影视| 少妇久久久久久| 亚洲伊人久久综合| 国产日韩欧美中文在线播放| 国产精品日日摸夜夜添夜夜av| 亚洲成人av在线| 91精品国产91久久久| 精品色蜜蜜精品视频在线观看| 国产精品igao视频| 亚洲高清不卡av| 亚洲精品中文字幕有码专区| 一本大道香蕉久在线播放29| 久久亚洲国产精品成人av秋霞| 国产成人涩涩涩视频在线观看| 欧美一级视频在线观看| 精品一区二区三区电影| 色婷婷久久av| 亚洲电影免费观看高清完整版| 韩曰欧美视频免费观看| 久久天堂电影网| 亚洲人免费视频| 亚洲欧美激情四射在线日| 一本一本久久a久久精品综合小说| 国产精品久久久久久久久影视| 欧美激情xxxx性bbbb| 成人情趣片在线观看免费| 亚洲国产三级网| 欧美极品美女电影一区| 在线日韩第一页| 国产精品综合不卡av| 成人女保姆的销魂服务| 亚洲欧美国产一区二区三区| 国产香蕉97碰碰久久人人| y97精品国产97久久久久久| 亚洲国产精品视频在线观看| 久久久噜久噜久久综合| 色综合视频一区中文字幕| 亚洲精品国产综合久久| 91爱爱小视频k| 精品久久久久久中文字幕| 久久免费视频这里只有精品| 亚洲综合国产精品| 777午夜精品福利在线观看| 日韩美女免费线视频| 国产一区二区三区三区在线观看| 国产精品欧美日韩一区二区| 在线看国产精品| 亚洲精品免费在线视频| 亚洲国产精品va在线看黑人| 国产欧美日韩丝袜精品一区| 中文字幕亚洲无线码a| 亚州成人av在线| www.99久久热国产日韩欧美.com| 国产一区在线播放| 国产精品直播网红| 精品在线欧美视频| 久久精品国产96久久久香蕉| 97av视频在线| 欧美高清videos高潮hd| 欧美在线观看一区二区三区| 亚洲天堂免费观看| 欧美精品在线极品| 亚洲美女免费精品视频在线观看| 九九九久久久久久| 日韩暖暖在线视频| 精品国产一区二区三区久久狼黑人| 午夜精品久久久久久久白皮肤| 久久久欧美一区二区| 日韩经典中文字幕| 欧美激情欧美激情在线五月| 日韩电影中文字幕在线观看| 亚洲性猛交xxxxwww| y97精品国产97久久久久久| 亚洲色图欧美制服丝袜另类第一页| 日本高清不卡在线| 成人性生交大片免费看小说| 91精品国产91| 亚洲精品视频二区| 亚洲午夜久久久影院| 久久在线精品视频| 亚洲福利视频在线| 成人免费网站在线| 精品一区二区三区三区| 美女福利精品视频| 亚洲免费av电影| 精品国产一区二区三区久久久狼| 欧美乱妇40p| 国产精品久久久久99| 欧美日韩一区二区在线| 日韩精品视频三区| 九九热这里只有在线精品视| 欧美日韩亚洲91| 国产亚洲成精品久久| 久久久久久国产精品三级玉女聊斋| 欧美日韩综合视频网址| 91久久久久久久久久久| 欧美性色视频在线| 日韩精品在线观看一区二区| 97久久精品人人澡人人爽缅北| 欧美成人中文字幕| 国产成人精品在线观看| 最近2019中文字幕大全第二页| 国产精品亚洲аv天堂网| 68精品久久久久久欧美| 在线性视频日韩欧美| 欧美有码在线视频| 精品动漫一区二区| 欧美日本高清视频| xxxx欧美18另类的高清| 2021久久精品国产99国产精品| 精品久久久久久久久久国产|