中国移动MM7API开发问题

最近用中兴的MM7API接口调试移动彩信接口

调试了接近一周,总算调通。没有多大的成就感,因为配置文件很少。就几个简单的配置。废话不说。直接上代码。

在测试过程中,MM7API可能会报出-102 ,4007等诸多问题。原因只有一个,配置文件没有填对。

<?xml version="1.0"?>
<vasp:MM7Config xmlns:vasp="http://mms.chinamobile.com/mm7ConfigSchema">
	<AuthenticationMode>0</AuthenticationMode>
	<UserName></UserName>			//做的时候是内部测试,不鉴权模式
	<Password></Password>
	<MaxMessageSize>100000</MaxMessageSize>
	<LogPath>/root/</LogPath>
	<logLevel>0</logLevel>
	<Charset>UTF-8</Charset>   //GB2312和UTF-8都可以试试,我之前写GB2312发过去是乱码
	<mmscURL>/vas</mmscURL>		//原来是mm7不过貌似mm7和vas都是可以的。具体原因不详
	<mmscIP>110.138.89.20:8088</mmscIP> //填写彩信中心ip:端口
	<MmscID>999000</MmscID>   //此处需要和彩信中心联系获得
	<UseSSL>false</UseSSL>
	<ListenIP>221.181.32.7</ListenIP> //本机ip
	<ListenPort>8088</ListenPort>
	<BackLog>50</BackLog>
	<TimeOut>90000</TimeOut>
	<ReSendCount>2</ReSendCount>
	<LogNum>100</LogNum>
	<LogInterval>120</LogInterval>
	<LogSize>1000</LogSize>
</vasp:MM7Config>


另外一个主要就是那个测试java文件了。上代码
package com.cmcc.mm7.vasp.conf;

import java.io.FileInputStream;
import java.io.IOException;
import java.util.LinkedList;
import java.util.List;
import java.util.Properties;

import com.cmcc.mm7.vasp.common.MMConstants;
import com.cmcc.mm7.vasp.common.MMContent;
import com.cmcc.mm7.vasp.message.MM7RSRes;
import com.cmcc.mm7.vasp.message.MM7SubmitReq;
import com.cmcc.mm7.vasp.message.MM7SubmitRes;
import com.cmcc.mm7.vasp.service.MM7Sender;

public class MMSApiTest {
	
	 private MM7Config mm7Config;
	    //private  SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss");
	    private String senderAddress;
	    private String transactionID;
	    private String VASPID;
	    private String VASID;
	    private String serviceCode;

	    public MMSApiTest(String mm7ConfigFilename, String mm7ConnConfigFilename, String mm7SPInfofilename) throws IOException {
	        mm7Config = new MM7Config(mm7ConfigFilename);
	        mm7Config.setConnConfigName(mm7ConnConfigFilename);
	        Properties pp = new Properties();
	        pp.load(new FileInputStream(mm7SPInfofilename));
	        senderAddress = pp.getProperty("senderAddress");
	        transactionID = pp.getProperty("transactionID");
	        VASPID = pp.getProperty("VASPID");
	        VASID = pp.getProperty("VASID");
	        serviceCode = pp.getProperty("serviceCode");
	    }

	    public boolean sendMMS(String[] destNumber, String subject, List ids, List types, List contents) {
	        MM7SubmitReq submit = new MM7SubmitReq();
	        for (int i = 0; i < destNumber.length; i++) {
	            submit.addTo(destNumber[i]);
	        }
	        //set important attributes
	        //关联标识
	        submit.setTransactionID(transactionID);
	        //SP代码
	        submit.setVASPID(VASPID);
	        //服务代码
	        submit.setVASID(VASID);
	        //业务代码
	        submit.setServiceCode(serviceCode);
	        //MM始发方的地址
	        submit.setSenderAddress(senderAddress);
	        submit.setChargedParty((byte)1);
	        submit.setDeliveryReport(false);

	       

	        //设置消息体的subject和content
	        
	        submit.setSubject(subject);
	        MMContent content = new MMContent();
	        content.setContentType(MMConstants.ContentType.MULTIPART_RELATED);
	        content.setContentID("MMS");
	        /**
	        MMContent subSmil = MMContent.createFromFile("D:\\test\\MMSApiTest\\smil1.smil");
	        subSmil.setContentID("smil1.smil");
	        subSmil.setContentType(MMConstants.ContentType.SMIL);

	       

	        MMContent sub2 = MMContent.createFromFile("D:\\test\\MMSApiTest\\6.jpg");
	        sub2.setContentID("<02.jpg>");
	        sub2.setContentLocation("02.jpg");
	        sub2.setContentType(MMConstants.ContentType.JPEG);
	        **/
	        
	        MMContent sub1 = MMContent.createFromString("testing!!!!!");
	        sub1.setContentID("<01.txt>");
	        sub1.setContentType(MMConstants.ContentType.TEXT);
	        sub1.setContentLocation("01.txt");

	
	          MMContent sub4 = MMContent.createFromFile("/root/workspace/mmapi/config/12.jpg");
	          sub4.setContentID("5.jpg");
	          sub4.setContentLocation("5.jpg");
	          sub4.setContentType(MMConstants.ContentType.JPEG);

	         content.addSubContent(sub1);
	        // content.addSubContent(sub2);
	        //  content.addSubContent(sub3);
	       content.addSubContent(sub4);



	        submit.setContent(content);

	        try {
	            MM7Sender mm7Sender = new MM7Sender(mm7Config);
	            MM7RSRes rsRes;
	            rsRes = (MM7RSRes) mm7Sender.send(submit);
	            if (rsRes instanceof MM7SubmitRes) {
	                MM7SubmitRes submitRes = (MM7SubmitRes) rsRes;
	                int code = submitRes.getStatusCode();
	                System.out.println("submitRes.statuscode=" + rsRes.getStatusCode() + ";submitRes.statusText=" + rsRes.getStatusText());
	                if (code == 1000) return true;
	                else return false;
	            } else {
	                System.out.println("不正确消息!rsRes.statuscode=" + rsRes.getStatusCode() + ";rsRes.statusText=" + rsRes.getStatusText());
	                return false;
	            }
	/*
				MM7CancelReq cancelReq = new MM7CancelReq();
				cancelReq.setTransactionID(submitRes.getTransactionID());
				cancelReq.setMessageID(submitRes.getMessageID());
				cancelReq.setVASID("4444");
				cancelReq.setVASPID("804444");
				cancelReq.setSenderAddress("4444");
				rsRes = MMSSender.send(cancelReq);
				if(rsRes instanceof MM7CancelRes)
				{
				MM7CancelRes cancelRes = (MM7CancelRes)rsRes;
				System.out.println("-----------------------");
				System.out.println(cancelRes.toString());
				System.out.println("cancelRes!statuscode="+cancelRes.getStatusCode()+";statustext="+cancelRes.getStatusText());
				}else{
				  System.out.println("不正确消息!rsRes.statuscode="+rsRes.getStatusCode() + ";rsRes.statusText=" + rsRes.getStatusText());
				}
				
	*/
	/*
				MM7ReplaceReq replaceReq = new MM7ReplaceReq();
				replaceReq.setTransactionID(submitRes.getTransactionID());
				replaceReq.setMessageID(submitRes.getMessageID());
				replaceReq.setVASID("4444");
				replaceReq.setVASPID("804444");
				replaceReq.setServiceCode("123");
				content = new MMContent();
				content.setContentType(MMConstants.ContentType.MULTIPART_RELATED);
				content.setContentID("mm7Test");
				ss = "这是一个Replace MMS";
				bb = null;
				bb = ss.getBytes();
				input = new ByteArrayInputStream(bb);
				sub2 = MMContent.createFromStream(input);
				sub2.setContentID("2.txt");
				sub2.setContentType(MMConstants.ContentType.TEXT);
				content.addSubContent(sub2);
				replaceReq.setContent(content);
				rsRes = MMSSender.send(replaceReq);
				if(rsRes instanceof MM7ReplaceRes)
				{
				MM7ReplaceRes replaceRes = (MM7ReplaceRes)rsRes;
				System.out.println("Replace!res.statuscode="+replaceRes.getStatusCode()+";res.statustext="+replaceRes.getStatusText());
				}else{
				  System.out.println("不正确消息!rsRes.statuscode="+rsRes.getStatusCode() + ";rsRes.statusText=" + rsRes.getStatusText());
				}
	*/
	        } catch (Exception e) {
	            System.out.println(e);
	        }

	        return false;
	    }

	    public static void main(String[] args) throws IOException {

	        String[] destNumber = new String[]{"138000000"}; //发送电话号码
	        if (args != null && args.length == 1) {
	            destNumber[0] = args[0];
	        }
	        for (int i = 0; i < destNumber.length; i++) {
	            System.out.println("准备发送,手机号:" + destNumber[i]);
	        }

	        LinkedList ids = new LinkedList();
	        LinkedList types = new LinkedList();
	        LinkedList contents = new LinkedList();
	        ids.add("1.txt");
	        ids.add("2.jpg");
	        ids.add("3.jpg");
	        types.add("text");
	        types.add("jpg");
	        types.add("jpg");
	        contents.add("你好abc".getBytes());
	        contents.add(new byte[]{0, -1, -1, 1, 2});
	        contents.add(new byte[]{0, -1, -1, 1, 2});

	        String dir = "/root/workspace/mmapi/config/";
	        MMSApiTest mMSApiTest = new MMSApiTest(dir + "mm7Config.xml", dir + "ConnConfig.xml", dir + "mm7.properties");
	        mMSApiTest.sendMMS(destNumber, "10086", ids, types, contents);
	        System.out.println("发送完毕");
	    }

}

     submit.setVASPID(VASPID);
	        //服务代码
	        submit.setVASID(VASID);
	        //业务代码
	        submit.setServiceCode(serviceCode);
	        //MM始发方的地址
	        submit.setSenderAddress(senderAddress);
	        submit.setChargedParty((byte)1);
	        submit.setDeliveryReport(false);
这几处是关键啊。之前一直报4007原来是收费不对。需要设置下收费模式。因为是给移动内部做,这个只是标示而已。但是需要写。


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值