华为短信接口问题
公司做大了服务必定会回退,这点我是深有体会,在一次项目实施中要用到华为的短信接口,我们是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 楼 icefire 2011-04-20 这两天也搞这个,只能说华为那帮人,基本没搞过啥java,根本不知道jar是个什么概念。 2 楼 pro.stone05 2011-05-26 代码能贴出来看看嘛 3 楼 airballbibi 2011-06-21 可以看看这篇帖子,不知道有帮助没: