Мыло MMS должно выглядеть следующим образом: Спецификация SOAP 3GP MM7 .
Вот как я это делаю:
Вам понадобится активация. Jar,saaj-api.jar, activ.jar и saaj-impl.jar (и любые другие зависимые файлы jar).
Вот как вы можете начать.
package com.pixelandtag.mms.soap;
import java.io.IOException;
import java.net.URL;
import java.sql.Timestamp;
import javax.activation.DataHandler;
import javax.xml.soap.AttachmentPart;
import javax.xml.soap.MessageFactory;
import javax.xml.soap.Name;
import javax.xml.soap.SOAPBody;
import javax.xml.soap.SOAPBodyElement;
import javax.xml.soap.SOAPConnection;
import javax.xml.soap.SOAPConnectionFactory;
import javax.xml.soap.SOAPElement;
import javax.xml.soap.SOAPEnvelope;
import javax.xml.soap.SOAPException;
import javax.xml.soap.SOAPFactory;
import javax.xml.soap.SOAPHeader;
import javax.xml.soap.SOAPHeaderElement;
import javax.xml.soap.SOAPMessage;
import javax.xml.soap.SOAPPart;
public class MMSGen {
private static final String TxId = "";
private static final String MM7_VERSION = "";
private static final String VASPID = "";
private static final String VASID = "";
private static final String SHORTCODE = "";
private static final String SERVICE_CODE = "";
private static final String LINKED_ID = "";
private static final String MMSCMPMMS0000 = "";
private static final String EARLIEST_DELIVERY_TIME = "2006-11-09T13:01:04+03:00";
private static final String EXPIRY_DATE = "2007-11-10T13:01:04+03:00";
private static final String DELIVERY_REPORT = "false";
private static final String READ_REPLY = "false";
private static final String SUBJECT = "";
private static final String DISTRIBUTION_INDICATION = "false";
/**
* @param args
* @throws IOException
*/
public static void main(String[] args) throws IOException {
try {
//SOAP Message created
MessageFactory factory = MessageFactory.newInstance();
SOAPMessage message = factory.createMessage();
//Now accessing the elements of the soap message
SOAPPart soapPart = message.getSOAPPart();
//Get the envelope
SOAPEnvelope envelope = soapPart.getEnvelope();
//You can now use the getHeader and getBody methods
//of envelope to retrieve its empty SOAPHeader and SOAPBody objects.
SOAPHeader header = envelope.getHeader();
SOAPBody body = envelope.getBody();
//Other ways of getting the body and header
//header = message.getSOAPHeader();
//body = message.getSOAPBody();
//Deleting a node.
//header.detachNode();
SOAPFactory soapFactory = SOAPFactory.newInstance();
//================CONSTRUCTING HEADER
Name headerName = soapFactory.createName("TransactionID",
"mm7", "http://www.3gpp.org/ftp/Specs/archive/23_series/23.140/schema/REL-5-MM7-1-2");
SOAPHeaderElement headerElement = header.addHeaderElement(headerName);
headerElement.setTextContent("TID."+TxId);
headerElement.setMustUnderstand(true);
//===============HEADER DONE======================
//===============CONSTRUCTING BODY==============
Name bodyName = soapFactory.createName("SubmitReq");
SOAPBodyElement bodyElement = body.addBodyElement(bodyName);
Name attributeName = envelope.createName("xmlsn");//change name to proper to xmls, though it does not print out
bodyElement.addAttribute(attributeName, "http://www.3gpp.org/ftp/Specs/archive/23_series/23.140/schema/REL-5-MM7-1-2");
bodyName = soapFactory.createName("MM7Version");
SOAPElement MM7Version = bodyElement.addChildElement(bodyName);
MM7Version.setTextContent(MM7_VERSION);
bodyName = soapFactory.createName("SenderIdentification");
SOAPElement SenderIdentification = bodyElement.addChildElement(bodyName);
bodyName = soapFactory.createName("SenderAddress");
SOAPElement senderAddress = SenderIdentification.addChildElement(bodyName);
bodyName = soapFactory.createName("ShortCode");
SOAPElement shortCode = senderAddress.addChildElement(bodyName);
shortCode.setTextContent(SHORTCODE);
bodyName = soapFactory.createName("Recipients");
SOAPElement recipients = bodyElement.addChildElement(bodyName);
bodyName = soapFactory.createName("To");
SOAPElement to = recipients.addChildElement(bodyName);
bodyName = soapFactory.createName("Number");
SOAPElement number = to.addChildElement(bodyName);
number.setTextContent(MMSCMPMMS0000);
bodyName = soapFactory.createName("VASPID");
SOAPElement vaspID = SenderIdentification.addChildElement(bodyName);
vaspID.setTextContent(VASPID);
bodyName = soapFactory.createName("VASID");
SOAPElement vasID = SenderIdentification.addChildElement(bodyName);
vasID.setTextContent(VASID);
bodyName = soapFactory.createName("ServiceCode");
SOAPElement serviceCode = bodyElement.addChildElement(bodyName);
serviceCode.setTextContent(SERVICE_CODE);
bodyName = soapFactory.createName("LinkedID");
SOAPElement linkedID = bodyElement.addChildElement(bodyName);
linkedID.setTextContent(LINKED_ID);
bodyName = soapFactory.createName("MessageClass");
SOAPElement messageClass = bodyElement.addChildElement(bodyName);
messageClass.setTextContent(MessageClass.Personal.toString());
bodyName = soapFactory.createName("EarliestDeliveryTime");
SOAPElement earliestDeliveryTime = bodyElement.addChildElement(bodyName);
earliestDeliveryTime.setTextContent(EARLIEST_DELIVERY_TIME);
bodyName = soapFactory.createName("ExpiryDate");
SOAPElement expiryDate = bodyElement.addChildElement(bodyName);
expiryDate.setTextContent(EXPIRY_DATE);
bodyName = soapFactory.createName("DeliveryReport");
SOAPElement deliveryReport = bodyElement.addChildElement(bodyName);
deliveryReport.setTextContent(DELIVERY_REPORT);
bodyName = soapFactory.createName("ReadReply");
SOAPElement readReply = bodyElement.addChildElement(bodyName);
readReply.setTextContent(READ_REPLY);
bodyName = soapFactory.createName("Priority");
SOAPElement priority = bodyElement.addChildElement(bodyName);
priority.setTextContent(Priority.Normal.toString());
bodyName = soapFactory.createName("Subject");
SOAPElement subject = bodyElement.addChildElement(bodyName);
subject.setTextContent(SUBJECT);
bodyName = soapFactory.createName("ChargedParty");
SOAPElement chargedParty = bodyElement.addChildElement(bodyName);
chargedParty.setTextContent(ChargedParty.Recipient.toString());
bodyName = soapFactory.createName("DistributionIndicator");
SOAPElement distributionIndicator = bodyElement.addChildElement(bodyName);
distributionIndicator.setTextContent(DISTRIBUTION_INDICATION);
bodyName = soapFactory.createName("Content");
SOAPElement content = bodyElement.addChildElement(bodyName);
attributeName = envelope.createName("href");//change name to proper to xmls, though it does not print out
SOAPElement attr = content.addAttribute(attributeName, "cid:A0");
attributeName = envelope.createName("allowAdaptations");//change name to proper to xmls, though it does not print out
attr = content.addAttribute(attributeName, "false");
//=====================BODY DONE================
//=================create attachment===========
// AttachmentPart attachment = message.createAttachmentPart();
//Simple attach
/* String stringContent = "Update address for Sunny Skies " +
"Inc., to 10 Upbeat Street, Pleasant Grove, CA 95439";
attachment.setContent(stringContent, "application/smil");
attachment.setContentId("update_address");
message.addAttachmentPart(attachment); */
URL url = new URL("http://www.petermak.nl/webalbum_peter_mak_aannemersbedrijf011002.jpg");
DataHandler dataHandler = new DataHandler(url);
AttachmentPart attachment1 =
message.createAttachmentPart(dataHandler);
// attachment.setContent(stringContent, "application/smil");
attachment1.setContentId("attached_image");
message.addAttachmentPart(attachment1);
URL url2 = new URL("file:///C:\\Users\\Timo\\Desktop\\MMS Pis\\pic_test.jpg");
dataHandler = new DataHandler(url2);
AttachmentPart attachment2 = message.createAttachmentPart(
dataHandler);
attachment2.setContentId("attached_image2");
message.addAttachmentPart(attachment2);
java.net.URL endpoint = new URL("http://theendpoint.");
System.out.println("\nREQUEST:\n");
message.writeTo(System.out);
System.out.println();
SOAPConnectionFactory soapConnectionFactory =
SOAPConnectionFactory.newInstance();
SOAPConnection connection =
soapConnectionFactory.createConnection();
SOAPMessage response = connection.call(message, endpoint);
System.out.println("\nRESPONSE:\n");
response.writeTo(System.out);
System.out.println();
connection.close();
} catch (SOAPException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}