bjhwdvyusx 发表于 2016-6-6 07:22:38

华为短信接口问题

  公司做大了服务必定会回退,这点我是深有体会,在一次项目实施中要用到华为的短信接口,我们是j2ee的项目,华为提供java的短信调用接口,文档也还可以,但问题出在了jar包上。api的调用其实不难理解,api只是提供一些开放的接口出来,真正的业务代码还在应用平台那里,可是华为提供的这个api有23M,我的天,和一个项目整个大小差不多了,我当时就感觉有点不对劲,打开jar包看了一下,乱七八糟什么都有,servlet的源码、jdbc的源码、xml的源码.......build.xml等一些无用的东西都被打了进去,在项目中发送短信页面报错,后台什么也不显示,无语中......,怎么也找不出问题,而且短信调用的方法断点都跟不进去,真是奇怪......,后来无意间看到webserver启动时报not loaded SMSendAPI.jar,我靠,这个问题烦了我三天时间,同样是放在WEB-INF/lib下的jar,为什么就只有华为的jar无法被webserver加载呢?联系他们工程师后得到的回复是,把SMSend.jar放到webserver的公享lib下,我照着做了还是不行,而且webserver这次无法启动了,包有冲突,我很是无语。后来让建个普通的java工程测试通过,很明显是jar包里的东西和webserver的类库有冲突,可是他们工程师却说他们新建个web项目,只放他们的jar包是可以测试通过的,再次无语,我总不能把我项目下的jar包全删了吧。
,后来我就对他们提供的jar包进行研究,发现很多类在执行过程中根本没有用到,我就一个个地删,但不管删哪个启动都会报错,后来一气之下将除了com包以外的所有文件都删了,结果成功启动,而且短信发送也没问题了。
  下面是我的短信调用代码,具体参数说明我就不一一解释了,如果你有用到他们会提供api文档,里面有解释。此处主要是说明在web项目中无法使用的问题,欢迎大家交流。
  

      SMAPIConfig.setConfigFilePath(path); // 设置smsendsql.xml所在路径
try {
SMEntry.init(dbName, name, pwd);
SMEntry.logIn(userName, userPwd);
java.util.Date atTime = new java.util.Date();
String sourceAddr = "xxxxx"; // 短信源地址
int needStateReport = 0;// 是否需要状态报告
String serviceID = "API";// 业务类型
String feeType = "01";// 资费类型
String feeCode = "10";
int id = SMEntry.submitShortMessageState(atTime, sourceAddr, destNo, msg, needStateReport, serviceID, feeType, feeCode);
System.out.println("message state id=" + id);
} catch (Exception e) {
e.printStackTrace();
throw new RuntimeException(e);
}finally{
try {
SMEntry.cleanUp();
} catch (SMException e) {
e.printStackTrace();
}
}
   
页: [1]
查看完整版本: 华为短信接口问题