当前位置:编程学习 > JAVA >>

联通彩信网关编写内容

小弟今天开始尝试独立开发联通彩信网关

前期准备:

文档:
中国联通
数字蜂窝移动通信网
多媒体消息业务开发规范

.jar文件
mail.jar,vassdk_soap.jar

测试软件
MMSCSimulation.exe

第一个问题,小弟导入开发.jar文件,vassdk_soap.jar,将文档《中国联通》中的示例代码复制到开发工具中,但是会出现错误,import com.cmcc.mm7.vasp.pdu.*;这个地方,当把import com.cmcc.mm7.vasp.pdu.*;修改成import com.huawei.mm7.vasp.pdu.*;这个时候错误消失。

我的第一个问题是:是不是我的vassdk_soap.jar这个包下的有问题,如果是下错了,正确的.jar包在哪里下。

当小弟修改完示例代码没有错误后,代码如下:

package com.zz.main;

//import from mms
import com.huawei.mm7.vasp.pdu.*;
import com.huawei.mm7.vasp.message.*;
import com.huawei.mm7.vasp.service.*;
import com.huawei.mm7.vasp.common.*;
import com.huawei.mm7.vasp.conf.*;

// import from jdk
import java.util.*;
import java.io.*;



public class MainTest extends MM7Receiver
{
    public static HashMap transIDMap = new HashMap();

    public MainTest(MM7Config config)
    {
        super.setConfig(config);
    }

    /**
     * 处理Deliver消息,由子类实现
     *
     * @param request
     * @return MM7VASPRes
     */
    public MM7VASPRes doDeliver(MM7DeliverReq request)
    {
        // 打印请求消息
        System.out.println("NormalReceiverTest > DeliverReq::");
        System.out.println(request.toString());

        // 构造响应消息
        MM7DeliverRes deliverRes = new MM7DeliverRes();
        deliverRes.setServiceCode("service code 000");
        deliverRes.setStatus(1000);
        deliverRes.setStatusText("statustext");
        // 这个TransactionID保证MMSC能成功处理响应消息
        deliverRes.setTransactionID(request.getTransactionID());

        return deliverRes;
    }

    /**
     * 处理DeliveryReport消息,由子类实现
     *
     * @param request
     * @return MM7VASPRes
     */
    public MM7VASPRes doDeliveryReport(MM7DeliveryReportReq request)
    {
        // 打印请求消息
        System.out.println("NormalReceiverTest > DeliveryReport::");
        System.out.println(request.toString());

        //根据transID判断
        if (transIDMap.containsKey(request.getTransactionID()))
        {
            System.out.println("Get Deliver.Req message, TransactionID: " +
                               request.getTransactionID());
            // 构造响应消息
            MM7DeliveryReportRes deliveryReportRes = new MM7DeliveryReportRes();
            deliveryReportRes.setStatus(1000);
            deliveryReportRes.setStatusText("delivery report text");
            // 这个TransactionID保证MMSC能成功处理响应消息
            deliveryReportRes.setTransactionID(request.getTransactionID());
            //将消息从MAP中删除
            transIDMap.remove(request.getTransactionID());
            return deliveryReportRes;
        }
        else
        {
            System.out.println("Get error Deliver.Req message, TransactionID: " +
                               request.getTransactionID());
            MM7VASPErrorRes errorRes = new MM7VASPErrorRes(3001,
                "Error Deliver.Req message");
            return errorRes;
        }
    }

    /**
     * 处理ReadReply消息,由子类实现
     *
     * @param reqeust
     * @return MM7VASPRes
     */
    public MM7VASPRes doReadReply(MM7ReadReplyReq request)
    {
        // 打印请求消息
        System.out.println("NormalReceiverTest > ReadReply::");
        System.out.println(request.toString());
        // 构造响应消息
        MM7ReadReplyRes readReplyRes = new MM7ReadReplyRes();
        readReplyRes.setStatus(1000);
        readReplyRes.setStatusText("status text...");
        // 这个TransactionID保证MMSC能成功处理响应消息
        readReplyRes.setTransactionID(request.getTransactionID());
        return readReplyRes;
    }

    public static void main(String[] args)
    {
        System.setProperty("javax.xml.soap.MessageFactory", "com.sun.xml.messaging.saaj.soap.MessageFactoryImpl");
     System.setProperty("javax.xml.soap.SOAPConnectionFactory", "com.sun.xml.messaging.saaj.client.p2p.HttpSOAPConnectionFactory");
        //初始化配置参数
        MM7Config mm7Config = new MM7Config("E:\\aa\\mm7Config.xml");
        //启动一个接收线程
        MainTest receiver = new MainTest(mm7Config);
        receiver.setReceiver(receiver);
        receiver.start();

        MM7Sender sender = new MM7Sender(mm7Config); //创建MM7Sender对象

        // 可以根据需要增加一个循环,自动发送
        MM7SubmitReq req = new MM7SubmitReq();
        //构造消息
        req.setTransactionID("1000000");
        req.setVASPID("52947");
        req.setVASID("31900018");
        req.setSender("3190001805"); // VASID + ServiceCode
        req.addTo("1370000000");
        req.setServiceCode("05");
        req.setLinkID("9999");
        req.setMessageClass("Personal");
        req.setDate(new Date());
       // req.setExpiry(10000000);
        req.setDeliveryReport(true);
        req.setReadReply(true);
        req.setPriority( (byte) 0);
        req.setReplyDeadline(new Date());
        req.setSubject("This is submitReq");
        req.setAdaptations(true);
        req.setChargedParty(MMConstants.ChargedParty.SENDER);
        req.setDistributionIndicator(true);

        // 先构造一个媒体容器
        MMContent mainContent = new MMContent();
        mainContent.setContentType(MMConstants.ContentType.MULTIPART_RELATED);
        mainContent.setContentID("bbbbbbbbbb");
        req.setContent(mainContent);

        // 构造一个媒体,此处添加的只是一个文本串
        MMContent mmc = new MMContent();
        mmc.setData(new String("wwwwwwwww").getBytes()); //添加内容体
        mmc.setContentType("text/plain"); //设置内容体格式
        mmc.setContentID("aaID");
        mainContent.addSubContent(mmc); //将创建好的内容添加到消息

        //将消息以TransID为主键保存,接收线程接收到递送报告时,再将该消息从map中删除。
        transIDMap.put(req.getTransactionID(), req);

        MM7Message rsp = sender.send(req);
        if (rsp.getStatusCode() != MMConstants.RequestStatus.SUCCESS)
        {
            //发送失败处理
         System.out.println("1,"+rsp.getStatusCode());
         System.out.println(","+rsp.getStatusText());
        }else{
         System.out.println("2,"+rsp.getStatusCode()+","+rsp.getStatusText());
        }
    }
}


开始修改mm7Config.xml文件,修改后源代码如下:

<?xml version="1.0"?>
<vasp:MM7Config
xmlns:vasp="http://mms.chinamobile.com/mm7ConfigSchema">
<AuthenticationMode>0</AuthenticationMode>
<UserName>jllf</UserName>
<Password>jllf</Password>
<MaxMessageSize>100000</MaxMessageSize>
<LogPath>d:\powersoft\vas_log</LogPath>
<logLevel>0</logLevel>
<Charset>UTF-8</Charset>
<mmscURL>http://127.0.0.1:8081/Vas</mmscURL>
<mmscIP>8081</mmscIP>
<MmscID>643101</MmscID>
<UseSSL>true</UseSSL>
<ListenIP>http://127.0.0.1:9080/Receiver</ListenIP>
<ListenPort>9080</ListenPort>
<BackLog>50</BackLog>
<TimeOut>90000</TimeOut>
<ReSendCount>2</ReSendCount>
<LogNum>100</LogNum>
<LogInterval>120</LogInterval>
<LogSize>1000</LogSize>
</vasp:MM7Config>

以上为我修改后的代码,然后我开始测试。下发能接受到,但是上行信息接受不到,请教高人~!




--------------------编程问答-------------------- 问题追加,这个程序需要放在tomcat下运行吗? --------------------编程问答-------------------- 现在才弄明白原来订购关系和短信网关是2个东西,自己汗一个。
--------------------编程问答-------------------- 楼主现在还在调试吗?
这个调试成功了吗? --------------------编程问答-------------------- 我现在在启动一个接收线程时会报一个这样的错:
java.net.BindException: Cannot assign requested address: JVM_Bind
at java.net.PlainSocketImpl.socketBind(Native Method)
at java.net.PlainSocketImpl.bind(PlainSocketImpl.java:359)
at java.net.ServerSocket.bind(ServerSocket.java:319)
at java.net.ServerSocket.<init>(ServerSocket.java:185)
at com.huawei.mm7.vasp.service.MM7Receiver.start(MM7Receiver.java:132)
at m.main(m.java:106)
换过jdk,从1.6换到1.5,也未解决。 --------------------编程问答-------------------- 楼主加Q:38693841
一起探讨 --------------------编程问答-------------------- 楼主还在做么  我才开始  加Q626545711
补充:Java ,  Java相关
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,