<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    java隨記

    堅(jiān)持就是勝利!

     

    j2ee web service開(kāi)發(fā)(三) SAAJ 帶附件的soap消息

    ? 帶附件的soap消息api,其內(nèi)容很豐富,它是一個(gè)允許用soap消息而不是用jax-rpc來(lái)調(diào)用web service的API .它通過(guò)直接創(chuàng)建XML消息來(lái)完成web serivce的調(diào)用.SOAP API 簡(jiǎn)化了創(chuàng)建XML的工作.?取自j2ee文檔的soap消息的結(jié)構(gòu)圖.
    saaj-noAttach.gif?
    完整的SAAJ客戶端程序. 服務(wù)器端的程序在j2ee web service開(kāi)發(fā)(一) 里可以找到.沒(méi)有詳細(xì)介紹saaj的一些類
    的使用.好在它們都有很好的自解釋性.
    package array;

    import javax.xml.soap.*;
    import java.net.*;
    import java.io.*;
    import java.util.*;
    import java.text.SimpleDateFormat;
    public class SaajClient {
    ??? public SaajClient() {
    ??? }

    ??? public static void main(String[] args) throws Exception {
    ??????? SaajClient client = new SaajClient();
    ??????? User[] user = new User[2];
    ??????? user[0] = new User("張三", "027-88888888", new Date());
    ??????? user[1] = new User("lisi", null, new Date());
    ??????? saajTest(user);

    ??? }

    ??? private static void saajTest(User[] user) throws MalformedURLException,
    ??????????? IOException,
    ??????????? UnsupportedOperationException, SOAPException {
    ??????? MessageFactory factory = MessageFactory.newInstance();//SAAJ的根工廠類
    ??????? SOAPMessage message = factory.createMessage();
    ??????? //SOAPMessage 對(duì)象需要一些元素,包括SOAPPart,SOAPEnvelope,SOAPHeader,SOAPBody對(duì)象
    ??????? //SAAJ通過(guò)返回一個(gè)新的已經(jīng)包括這些元素的SOAPMessage對(duì)象來(lái)簡(jiǎn)化操作

    ??????? SOAPFactory s = SOAPFactory.newInstance();//通用工廠類,創(chuàng)建Name,SOAPElement對(duì)象

    ??????? Name countUser = s.createName("countUser", "mh", "http://array");
    ??????? //Name對(duì)象表示一個(gè)XML限定名稱
    ??????? Name arrayOfUser_1 = s.createName("arrayOfUser_1");
    ??????? Name xsi = s.createName("xmlns:xsi");
    ??????? Name nullAttribute = s.createName("xsi:nil");

    ??????? //下面的代碼創(chuàng)建soap對(duì)象
    ??????? SOAPBody body = message.getSOAPBody();
    ??????? SOAPBodyElement bodyChildElement = body.addBodyElement(countUser);
    ??????? SOAPElement arrayOfUser = bodyChildElement.addChildElement(
    ??????????????? arrayOfUser_1);
    ????? //? arrayOfUser.addAttribute(xsi, "??????? arrayOfUser.addNamespaceDeclaration("xsi","??????? //定義arrayOfUser的 xmlns:xsi屬性? 該名稱空間是XML模式實(shí)例命名空間,由XML模式規(guī)范定義,它定義了
    ??????? //可以在XML文檔中使用的屬于該命名空間的一些特性.

    ??????? for (int i = 0; i < user.length; i++) {
    ??????????? //需要注意順序,也就是和復(fù)雜類型的sequence元素的順序?qū)?yīng)
    ??????????? Name valueName = s.createName("value");
    ??????????? SOAPElement value = arrayOfUser.addChildElement(valueName);
    ??????????? Name birthday = s.createName("birthDay");
    ??????????? SOAPElement birthdayElement = value.addChildElement(birthday);

    ??????????? if (user[i].getBirthDay() == null) {
    ??????????????? birthdayElement.addAttribute(nullAttribute, "1");
    ??????????? } else {
    ??????????????? //日期類型必須進(jìn)行格式化
    ??????????????? SimpleDateFormat format= new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss");
    ??????????????? birthdayElement.addTextNode(format.format(user[i].getBirthDay()));
    ??????????? }
    ??????????? Name name = s.createName("name");
    ??????????? SOAPElement nameElement = value.addChildElement(name);
    ??????????? if (user[i].getName() == null) {
    ??????????????? //傳送空值
    ??????????????? nameElement.addAttribute(nullAttribute, "1");
    ??????????? } else {
    ??????????????? nameElement.addTextNode(user[i].getName());
    ??????????? }
    ??????????? Name phone = s.createName("phone");
    ??????????? SOAPElement phoneElement = value.addChildElement(phone);
    ??????????? if (user[i].getPhone() == null) {
    ??????????????? phoneElement.addAttribute(nullAttribute, "1");
    ??????????? } else {
    ??????????????? phoneElement.addTextNode(user[i].getPhone());
    ??????????? }

    ??????? }

    ??????? //發(fā)送soap消息
    ??????? SOAPConnectionFactory f = SOAPConnectionFactory.newInstance();
    ??????? SOAPConnection conn = f.createConnection();
    ??????? URL url = new URL("
    http://localhost:8082/complexType-array/services/CountUser");
    ??????? SOAPMessage response = conn.call(message, url);

    ??????? SOAPBody soapBody = response.getSOAPBody();
    ??????? Iterator it = soapBody.getChildElements();
    ??????? while (it.hasNext()) {
    ??????????? SOAPBodyElement bodyElement = (SOAPBodyElement) it.next();
    ??????????? String returnValue = bodyElement.getValue();
    ??????????? System.out.println(bodyElement.getElementName().getLocalName() +
    ?????????????????????????????? "????? " + returnValue);
    ??????? }


    ??????? response.writeTo(System.out);
    ??? }
    }

    程序向服務(wù)器端傳送的數(shù)據(jù):

    POST /complexType-array/services/CountUser HTTP/1.1
    SOAPAction: ""
    Content-Type: text/xml; charset=UTF-8
    User-Agent: Java/1.5.0_03
    Host: localhost:8082
    Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2
    Connection: keep-alive
    Content-Length: 448

    <env:Envelope xmlns:env='http://schemas.xmlsoap.org/soap/envelope/'>
    ?? <env:Header/>
    ?? <env:Body>
    ????? <mh:countUser xmlns:mh='http://array'>
    ???????? <arrayOfUser_1 xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'>
    ??????????? <value>
    ?????????????? <birthDay>2006-11-08T22:36:13</birthDay>
    ?????????????? <name>張三</name>
    ?????????????? <phone>027-88888888</phone>
    ??????????? </value>
    ??????????? <value>
    ?????????????? <birthDay>2006-11-08T22:36:13</birthDay>
    ?????????????? <name>lisi</name>
    ?????????????? <phone xsi:nil='1'/>
    ??????????? </value>
    ???????? </arrayOfUser_1>
    ????? </mh:countUser>
    ?? </env:Body></env:Envelope>
    從傳送的數(shù)據(jù)來(lái)看,就是一個(gè)符合soap規(guī)范的xml文檔.既然是xml文檔,也就是說(shuō)可以用jdom api 來(lái)操作它
    事實(shí)上就是這樣,soap api 可以跟 jdom api混合使用.
    如果你想賜教或者討論,歡迎加入QQ群:30406099

    posted on 2006-11-09 10:05 傻 瓜 閱讀(2577) 評(píng)論(0)  編輯  收藏 所屬分類: j2ee web service

    導(dǎo)航

    統(tǒng)計(jì)

    常用鏈接

    留言簿(7)

    我參與的團(tuán)隊(duì)

    隨筆分類

    隨筆檔案

    文章分類

    友情鏈接

    搜索

    積分與排名

    最新評(píng)論

    閱讀排行榜

    評(píng)論排行榜

    主站蜘蛛池模板: 亚洲经典千人经典日产| 九九九精品视频免费| 免费无码黄网站在线观看| 最新黄色免费网站| 在线观看亚洲精品福利片| 中文毛片无遮挡高清免费| 中文字幕亚洲综合久久2| 巨胸喷奶水www永久免费| 亚洲成a人片毛片在线| 精品一区二区三区免费毛片爱| 在线综合亚洲中文精品| 国产亚洲精品国看不卡| 美女被免费网站91色| 丝袜熟女国偷自产中文字幕亚洲| 日韩插啊免费视频在线观看| 亚洲Av综合色区无码专区桃色| 中国一级特黄的片子免费| 亚洲av一本岛在线播放| 亚洲国产精品综合久久一线| 亚洲一区免费视频| a一级爱做片免费| 亚洲三级高清免费| 久久精品亚洲日本佐佐木明希| 暖暖免费高清日本一区二区三区| 亚洲精品无码专区在线播放| 日韩成人免费视频播放| 嫩草在线视频www免费观看| 国产亚洲精品91| 亚洲精品WWW久久久久久| 国产精品怡红院永久免费| 亚洲综合激情五月色一区| 国产aa免费视频| 国产v精品成人免费视频400条| 久久夜色精品国产噜噜亚洲a| 亚洲五月综合缴情在线观看| 无码人妻丰满熟妇区免费| 曰批免费视频播放在线看片二| 国产亚洲精品精华液| 国产精品爱啪在线线免费观看| 中国一级毛片视频免费看| 免费看一级高潮毛片|