华为彩信模拟器的相关注意点
由于本公司是移动的合作伙伴,因此项目也与移动业务直接挂钩。最近开发了一个彩信项目,于是用华为彩信模拟器来进行测试。在此过程中遇到了很多问题,到现在已经一一解决了。由于原有的文档超级简单不能解决实际问题。因此在这里记录下来也算是作为补充。
首先是设置下行地址问题。下行地址填写在Listen Port里面,就是开发程序中的MMSCIP(彩信网关的ip地址),要填写完全。
再一个就是设置上行地址 填写在Send To里面。由于彩信采用的是 基于http的soap协议。所以上行地址实际上是一个url地址。本人尝试过用Tcp通信来获取数据,结果是悲剧的。总是获取不到数据。因此需要写一个页面,用来接收网关的彩信。推荐使用ashx页面。至于为什么,可以去MSDN上面看以看ashx的作用。它主要能监听http请求,那么写一个服务来获取页面的数据进行解包就可以获取到上行彩信了。
做好了这两步,测试还是有问题。它会提示如下错误:
“没有说明名称空间前缀"soap-env"。”
2009-6-24 17:20:05 com.sun.xml.internal.messaging.saaj.soap.MessageImpl writeTo
严重: SAAJ0540: Error during saving a multipart message
对于这个问题已经有高手进行解答了,我只说下高手的具体操作,我也是尝试了几天尝试出来的。本人不太懂java的机制,呵呵~。转入正题吧!
首先把高手的解决方法copy过来。
这个问题需要在系统属性中设置javax.xml.soap.MessageFactory和javax.xml.soap.SOAPConnectionFactory。实际上华为的彩信模拟器MMSCSimulation.exe是一个可执行的jar包,用WinRar将该文件展开到你的工作目录下,然后执行java -Xmx1024m -Xms1024m -Djavax.xml.soap.MessageFactory=com.sun.xml.messaging.saaj.soap.MessageFactoryImpl -Djavax.xml.soap.SOAPConnectionFactory=com.sun.xml.messaging.saaj.client.p2p.HttpSOAPConnectionFactory com.huawei.mms.simulation.MM7Simulation启动模拟器。
我说的解决方法限于对java不是很了解的。net人士,java高手可以说说更好的方法哦。具体有两种操作方式:
1.找到你的jdk目录 运行->cmd-> cd (java.exe所在的目录绝对路径) 。切换的这个路径之后,输入这段命令java -Xmx1024m -Xms1024m -Djavax.xml.soap.MessageFactory=com.sun.xml.messaging.saaj.soap.MessageFactoryImpl -Djavax.xml.soap.SOAPConnectionFactory=com.sun.xml.messaging.saaj.client.p2p.HttpSOAPConnectionFactory com.huawei.mms.simulation.MM7Simulation 就可以正确启动模拟器了。
这个处理方法,常见的错误有两个:(1)路径没设置正确,无法运行命令。(2)机器配置太差,如果机器配置太差,就更改下Xmx1024m,改为Xmx512m或者Xmx256m 两个都要改。一般就可以解决这个问题了。
2.运行->cmd->cd (模拟器所在的绝对路径) 。切换之后输入上面的那段命令。就可以正确启动模拟器了。错误处理法参考解决方法1。
运行之后则不会出现 “ 没有说明名称空间前缀"soap-env"。” 错误了。
如图:
打开Detail,就可以看到正确的包了。
特此分享一下,希望能帮到大家。