千家信息网

SAAJ带附件的soap消息如何理解

发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,今天就跟大家聊聊有关SAAJ带附件的soap消息如何理解,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。带附件的soap消息api,其内容很丰富
千家信息网最后更新 2026年11月02日SAAJ带附件的soap消息如何理解

今天就跟大家聊聊有关SAAJ带附件的soap消息如何理解,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

带附件的soap消息api,其内容很丰富,它是一个允许用soap消息而不是用jax-rpc来调用web service的API .它通过直接创建XML消息来完成web serivce的调用.SOAP API 简化了创建XML的工作. 取自j2ee文档的soap消息的结构图.
没有详细介绍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 对象需要一些元素,包括SOAPPart,SOAPEnvelope,SOAPHeader,SOAPBody对象          //SAAJ通过返回一个新的已经包括这些元素的SOAPMessage对象来简化操作          SOAPFactory s = SOAPFactory.newInstance();//通用工厂类,创建Name,SOAPElement对象           Name countUser = s.createName("countUser", "mh", "http://array");          //Name对象表示一个XML限定名称          Name arrayOfUser_1 = s.createName("arrayOfUser_1");          Name xsi = s.createName("xmlns:xsi");          Name nullAttribute = s.createName("xsi:nil");           //下面的代码创建soap对象          SOAPBody body = message.getSOAPBody();          SOAPBodyElement bodyChildElement = body.addBodyElement(countUser);          SOAPElement arrayOfUser = bodyChildElement.addChildElement(                  arrayOfUser_1);        //  arrayOfUser.addAttribute(xsi, "http://www.w3.org/2001/XMLSchema-instance");          arrayOfUser.addNamespaceDeclaration("xsi","http://www.w3.org/2001/XMLSchema-instance");          //定义arrayOfUser的 xmlns:xsi属性  该名称空间是XML模式实例命名空间,由XML模式规范定义,它定义了          //可以在XML文档中使用的属于该命名空间的一些特性.          for (int i = 0; i < user.length; i++) {              //需要注意顺序,也就是和复杂类型的sequence元素的顺序对应              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 {                  //日期类型必须进行格式化                  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());              }           }           //发送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);      }  }

程序向服务器端传送的数据:

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                 < name>lisi                 < phone xsi:nil='1'/>             < /value>          < /arrayOfUser_1>       < /mh:countUser>    < /env:Body>

从传送的数据来看,就是一个符合soap规范的xml文档.既然是xml文档,也就是说可以用jdom api 来操作它
事实上就是这样,在J2EE web service开发中,soap api 可以跟 jdom api混合使用。

看完上述内容,你们对SAAJ带附件的soap消息如何理解有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注行业资讯频道,感谢大家的支持。

消息 对象 内容 文档 附件 元素 空间 也就是 名称 就是 工厂 数据 模式 类型 顺序 张三 复杂 也就是说 事实 事实上 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 上海挚品互联网科技有限公司 中智农互联网科技 互联网金融监管科技数据 互联网通讯科技 河南真二互联网科技有限公司 上海互联网科技有限公司 互联网 科技创新 南京欣网互联网科技 科技互联网创业计划书 互联网实体化科技化 健康食品互联网创新科技园项目 西安小鹰速贷互联网科技有限公司 元气玛特互联网科技公司是外包吗 电子商务与互联网科技的关系 神州科技互联网有限公司 万物互联网智能科技 互联网金融运营模式中的金融科技 美国五大互联网科技公司市值多少 优雇互联网科技有限公司 小牛互联网科技有限公司地址 互联网黑科技 互联网最新的科技 北京互联网科技 银川新华互联网科技职业技术培训学校图片 世界互联网科技公司市值排名 杭州壁岐互联网科技有限公司 信承诺互联网科技有限公司 云南互联网科技学费 银川新华互联网科技学校原画 武汉亿视互联网科技有限公司
0