需要通过ISAG协议发送彩信,彩信网关为中兴彩信服务器。
经过了一段时间的开发,终于顺利发送!遇到了很多问题,已被后面参考!
1,由于ISAG需要用到webservice,应该是发送目的地址,即ISAG服务器的服务地址 sendMessageUrl=http://x.x.x.x:9081/MmsSendMessageService
SendMessageServiceLocator sml = new SendMessageServiceLocator();
SendMessage sendMms = sml.getSendMessage(new java.net.URL(sendMessageUrl));
2,客户端调用后的回执地址,可以没有:endpoint=http://137.0.10.138:9080/SendMessageService/services/SendMessage
3,设置SoapHeader,一定要把header设置成局部变量,否则当群发时,容易发生追加,http://www.chinatelecom.com.cn/schema/ctcc/common/v2_1}ServiceException:<messageId>SVC0002</messageId><text>InvalidInputValue Attachment</text>错误:SOAPHeaderElement header = new SOAPHeaderElement(headerNameSpace,"RequestSOAPHeader");
4,设置header时,一定要按序列塞值,否则容易报错:序列问题;ctcc_common_types_2_1.xsd 的属性都是<xsd:sequence>的。
5,设置群发,multicastMessaging属性值一定是true
6,群发号码设置:org.apache.axis.types.URI[] addresses = new org.apache.axis.types.URI[desnum];
不管是什么操作系统,一定要保证电话号码是无空格,无换行符的,否则容易发生:org.apache.axis.types.URI$MalformedURIException: The scheme is not conformant 错误。
for (int i = 0; i < destnumbers.length; i++) {
if(destnumbers[i]!=null){
//注意一定要去除空格,换行符等等
String notnullStr = SmilAnalysisUtil.getNotNullStr(destnumbers[i].trim());
String proceNum = "tel:"+notnullStr;
addresses[i] = new org.apache.axis.types.URI(proceNum);
System.out.println(destnumbers[i]+"-------------addresses[i]==="+addresses[i]);
}
}