⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 soapencoder.java

📁 中国移动MM7 彩信客户端java源码文档和数据库设计
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
/**File Name:SOAPEncoder.java
 * Company:  中国移动集团公司
 * Date  :   2004-1-8
 * */

package com.cmcc.mm7.vasp.common;

import java.io.*;
import java.util.*;
import java.text.*;
import sun.misc.BASE64Encoder;
import com.cmcc.mm7.vasp.message.*;
import com.cmcc.mm7.vasp.conf.*;

public class SOAPEncoder
{
  private MM7VASPReq mm7VaspReq;
  private boolean bMessageExist;
  private boolean bEncoder;
  private ByteArrayOutputStream byteOutput;
  private MM7Config mm7Config;

  /**默认构造方法*/
  public SOAPEncoder()
  {
    reset();
  }

  public SOAPEncoder(MM7Config config)
  {
    mm7Config = config;
  }

  public void reset()
  {
    mm7VaspReq = null;
    bMessageExist = false;
    bEncoder = false;
    byteOutput = null;
    mm7Config = null;
  }
  /**设置MM7VASPReq类型的消息*/
  public void setMessage(MM7VASPReq mm7vaspreq)
  {
    mm7VaspReq = mm7vaspreq;
    bMessageExist = true;
  }
  /**得到byte[]形式的消息*/
  public byte[] getMessage()
  {
    if(bEncoder)
      return(byteOutput.toByteArray());
    else
      return(null);
  }
  /**进行消息的编码*/
  public void encodeMessage() throws SOAPEncodeException
  {
    if(!bMessageExist)
      throw new SOAPEncodeException("No Multimedia Messages set in the encoder!");
    try
    {
      byteOutput = new ByteArrayOutputStream();
      bEncoder = false;
      StringBuffer sb = new StringBuffer();
      StringBuffer ContentBuffer = new StringBuffer();
      SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss");
      //add by hudm 2004-06-21
      if(mm7VaspReq instanceof MM7SubmitReq)
      {
        MM7SubmitReq req = (MM7SubmitReq)mm7VaspReq;
        if(req.isContentExist())
        {
          sb.append("this is a multi-part message in MIME format" + "\r\n");
          sb.append("\r\n");
          sb.append("\r\n");
          sb.append("----NextPart_0_2817_24856" + "\r\n");
          sb.append("Content-Type:text/xml;charset=\"" + mm7Config.getCharSet() +
                    "\"\r\n");
          sb.append("Content-Transfer-Encoding:8bit" + "\r\n");
          sb.append("Content-ID:</tnn-200102/mm7-vasp>" + "\r\n");
          sb.append("\r\n");
        }
      }
      else if(mm7VaspReq instanceof MM7ReplaceReq)
      {
        MM7ReplaceReq req = (MM7ReplaceReq)mm7VaspReq;
        if(req.isContentExist())
        {
          sb.append("this is a multi-part message in MIME format" + "\r\n");
          sb.append("\r\n");
          sb.append("\r\n");
          sb.append("----NextPart_0_2817_24856" + "\r\n");
          sb.append("Content-Type:text/xml;charset=\"" + mm7Config.getCharSet() +
                    "\"\r\n");
          sb.append("Content-Transfer-Encoding:8bit" + "\r\n");
          sb.append("Content-ID:</tnn-200102/mm7-vasp>" + "\r\n");
          sb.append("\r\n");
        }
      }
      //end add by hudm 2004-06-21
      sb.append("<?xml version=\"1.0\" encoding=\""+mm7Config.getCharSet()+"\"?><env:Envelope xmlns:env=\"http://schemas.xmlsoap.org/soap/envelope/\"><env:Header>");//
      if(mm7VaspReq.isTransactionIDExist())  //
        sb.append("<mm7:TransactionID xmlns:mm7=\"http://www.3gpp.org/ftp/Specs/archive/23_series/23.140/schema/REL-6-MM7-1-0\" env:mustUnderstand=\"1\">"+mm7VaspReq.getTransactionID()+"</mm7:TransactionID>");
      else
        System.out.println("TransactionID 不许为空!");
      sb.append("</env:Header><env:Body>");
      /**
       * 若发送的消息为MM7SubmitReq
       * */
      if(mm7VaspReq instanceof MM7SubmitReq){
        MM7SubmitReq submitReq = (MM7SubmitReq) mm7VaspReq;
        sb.append("<SubmitReq xmlns=\"http://www.3gpp.org/ftp/Specs/archive/23_series/23.140/schema/REL-6-MM7-1-0\">");
        if(submitReq.isMM7VersionExist())
          sb.append("<MM7Version>"+submitReq.getMM7Version()+"</MM7Version>");
        else
          System.out.println("MM7Version 不许为空!");
        if(submitReq.isVASPIDExist() || submitReq.isVASIDExist() || submitReq.isSenderAddressExist())
        {
          sb.append("<SenderIdentification>");
          if (submitReq.isVASPIDExist())
            sb.append("<VASPID>"+submitReq.getVASPID()+"</VASPID>");
          else
            System.out.println("SP代码VASPID不许为空!");
          if(submitReq.isVASIDExist())
            sb.append("<VASID>"+submitReq.getVASID()+"</VASID>");
          else
            System.out.println("服务代码VASID不许为空!");
          if(submitReq.isSenderAddressExist())
            sb.append("<SenderAddress>"+submitReq.getSenderAddress()+"</SenderAddress>");
          sb.append("</SenderIdentification>");
        }
        else
          System.out.println("SP代码VASPID和服务代码VASID均不允许为空!");

        if(submitReq.isToExist() || submitReq.isCcExist() || submitReq.isBccExist())
        {
          sb.append("<Recipients>");
          if (submitReq.isToExist()) {
            sb.append("<To>");
            List ToList = new ArrayList();
            ToList = submitReq.getTo();
            for (int i = 0; i < ToList.size(); i++)
            {
              String strto = (String)ToList.get(i);
              if(strto.indexOf('@')>0)
                sb.append("<RFC2822Address>"+strto+"</RFC2822Address>");
              else
                sb.append("<Number>" + strto + "</Number>");
            }
            sb.append("</To>");
          }
          if(submitReq.isCcExist()){
            sb.append("<Cc>");
            List CcList = new ArrayList();
            CcList = submitReq.getCc();
            for (int i = 0; i < CcList.size(); i++)
            {
              String strcc = (String)CcList.get(i);
              if(strcc.indexOf('@')>0)
                sb.append("<RFC2822Address>"+strcc+"</RFC2822Address>");
              else
                sb.append("<Number>" + strcc + "</Number>");
            }
            sb.append("</Cc>");
          }
          if(submitReq.isBccExist()){
            sb.append("<Bcc>");
            List BccList = new ArrayList();
            BccList = submitReq.getBcc();
            for(int i=0;i<BccList.size();i++)
            {
              String strbcc = (String)BccList.get(i);
              if(strbcc.indexOf('@')>0)
                sb.append("<RFC2822Address>"+strbcc+"</RFC2822Address>");
              else
                sb.append("<Number>" +strbcc+ "</Number>");
            }
            sb.append("</Bcc>");
          }
          sb.append("</Recipients>");
        }
        else
          System.out.println("接收方地址To、抄送方地址Cc和密送方地址Bcc中至少需要有一个不为空!");

        if(submitReq.isServiceCodeExist())
          sb.append("<ServiceCode>"+submitReq.getServiceCode()+"</ServiceCode>");
        else
          System.out.println("业务代码ServiceCode不许为空!");

        if(submitReq.isLinkedIDExist())
          sb.append("<LinkedID>"+submitReq.getLinkedID()+"</LinkedID>");
        if(submitReq.isMessageClassExist())
          sb.append("<MessageClass>"+submitReq.getMessageClass()+"</MessageClass>");
        if(submitReq.isTimeStampExist())
          sb.append("<TimeStamp>"+sdf.format(submitReq.getTimeStamp())+"</TimeStamp>");
        if(submitReq.isReplyChargingExist())
        {
          sb.append("<ReplyCharging");
          if(submitReq.isReplyChargingSizeExist())
            sb.append(" replyChargingSize=\""+submitReq.getReplyChargingSize()+"\"");
          if(submitReq.isReplyDeadlineExist())
            sb.append(" replyDeadline=\""+sdf.format(new Date(submitReq.getReplyDeadlineRelative()))+"+08:00\"");
          if(submitReq.isReplyDeadlineAbsoluteExist())
            sb.append(" replyDeadline=\""+sdf.format(submitReq.getReplyDeadlineAbsolute())+"+08:00\"");
          sb.append("></ReplyCharging>");
        }
        if(submitReq.isEarliestDeliveryTimeExist())
        {
          Date dd = new Date(submitReq.getEarliestDeliveryTimeRelative());
          sb.append("<EarliestDeliveryTime>"+sdf.format(dd)+"+08:00"+"</EarliestDeliveryTime>");
        }
        if(submitReq.isEarliestDeliveryTimeAbsolute())
          sb.append("<EarliestDeliveryTime>"+
                    sdf.format(submitReq.getEarliestDeliveryTimeAbsolute())+"+08:00"+
                    "</EarliestDeliveryTime>");
        if(submitReq.isExpiryDateExist())
          sb.append("<ExpiryDate>"+
                    sdf.format(new Date(submitReq.getExpiryDateRelative()))
                               +"+08:00"+"</ExpiryDate>");
        if(submitReq.isExpiryDateAbsolute())
          sb.append("<ExpiryDate>"+sdf.format(submitReq.getExpiryDateAbsolute())+"+08:00"+"</ExpiryDate>");
        if(submitReq.isDeliveryReportExist())
          sb.append("<DeliveryReport>"+submitReq.getDeliveryReport()+"</DeliveryReport>");
        if(submitReq.isReadReplyExist())
          sb.append("<ReadReply>"+submitReq.getReadReply()+"</ReadReply>");
/*        if(submitReq.isReplyChargingExist())
          sb.append("<ReplyCharging>"+submitReq.getReplyCharging()+"</ReplyCharging>");
        if(submitReq.isReplyDeadlineExist())
          sb.append("<Reply-Deadline>"+sdf.format(new Date(
                    submitReq.getReplyDeadlineRelative()))+"+08:00"+"</Reply-Deadline>");
        if(submitReq.isReplyDeadlineAbsoluteExist())
          sb.append("<Reply-Deadline>"+sdf.format(
              submitReq.getReplyDeadlineAbsolute())+"+08:00"+"</Reply-Deadline>");
        if(submitReq.isReplyChargingSizeExist())
          sb.append("<ReplyChargingSize>"+submitReq.getReplyChargingSize()+"</ReplyChargingSize>");*/

        if(submitReq.isPriorityExist())
        {
//          sb.append("<Priority>" + submitReq.getPriority() + "</Priority>");
          if(submitReq.getPriority() == (byte)0)
            sb.append("<Priority>" + "Low" + "</Priority>");
          else if(submitReq.getPriority() == (byte)1)
            sb.append("<Priority>" + "Normal" + "</Priority>");
          else if(submitReq.getPriority() == (byte)2)
            sb.append("<Priority>" + "High" + "</Priority>");
        }
        if(submitReq.isSubjectExist())
          sb.append("<Subject>"+submitReq.getSubject()+"</Subject>");
        if(submitReq.isChargedPartyExist())
        {
//          sb.append("<ChargedParty>"+submitReq.getChargedParty()+"</ChargedParty>");
          if(submitReq.getChargedParty() == (byte)0)
            sb.append("<ChargedParty>Sender</ChargedParty>");
          else if(submitReq.getChargedParty() == (byte)1)
            sb.append("<ChargedParty>Recipient</ChargedParty>");
          else if(submitReq.getChargedParty() == (byte)2)
            sb.append("<ChargedParty>Both</ChargedParty>");
          else if(submitReq.getChargedParty() == (byte)3)
            sb.append("<ChargedParty>Neither</ChargedParty>");
          else if(submitReq.getChargedParty() == (byte)4)
            sb.append("<ChargedParty>ThirdParty</ChargedParty>");
        }
        if(submitReq.isChargedPartyIDExist())
          sb.append("<ChargedPartyID>"+submitReq.getChargedPartyID()+"</ChargedPartyID>");
        if(submitReq.isDistributionIndicatorExist())
          sb.append("<DistributionIndicator>"+submitReq.getDistributionIndicator()+"</DistributionIndicator>");
        if(submitReq.isContentExist())
        {
          //begin add by hudm 2004-03-09
          /*if(submitReq.getContent().isContentIDExist())
            sb.append("<Content href=\"cid:"+submitReq.getContent().getContentID()+"\"");
          if(submitReq.isAllowAdaptationsExist())
            sb.append(";allowAdaptions=\"True\"/>");
          else
            sb.append("/>");*/
            //end add by hudm 2004-03-09*/
          //sb.append("</mm7:SubmitReq>");
          sb.append("</SubmitReq>");
          sb.append("</env:Body></env:Envelope>");
          sb.append("\r\n");
          sb.append("----NextPart_0_2817_24856\r\n");
          MMContent parentContent = submitReq.getContent();
//          sb.append("Content-Type:"+parentContent.getContentType().getPrimaryType()+"/"+
//                    parentContent.getContentType().getSubType()+
//                    ";boundary=\"SubPart_7452684322002_77645\""+"\r\n");
          if(parentContent.getContentType() != null)
          {
            String strSubType = "";
            String strtempID = "<START>";
            strSubType = parentContent.getContentType().getSubType();
            if(strSubType.equalsIgnoreCase("related"))
            {
              if(parentContent.isMultipart())
              {
                List tempSub = new ArrayList();
                tempSub = parentContent.getSubContents();
                for(int x=0;x<tempSub.size();x++)
                {
                  MMContent tempCon = (MMContent)tempSub.get(x);
                  if(tempCon.getContentType().getSubType().equalsIgnoreCase("smil"))
                  {
                    if(tempCon.isContentIDExist())
                      strtempID = tempCon.getContentID();
                    else
                      strtempID = "<START>";
                      break;
                  }
                }
              }
              sb.append("Content-Type:"+"multipart/related;"+
                        "start=\""+strtempID+"\";type=\"application/smil\""+
                    ";boundary=\"SubPart_7452684322002_77645\""+"\r\n");
            }
            else
            {
              sb.append("Content-Type:" +

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -