日前,使用华为mas机的V4.1D3API接口(JAVA)进行发短信的开发测试。按照帮助文档导入了SMSendAPI.jar包,并把smsendsql.xml文档放在了当前目录。可是在测试程序中使用初始化时总是出现异常,希望有做过此类开发的高手们给分析下是怎么回事。
import java.util.Properties;
import com.huawei.api.*;
import com.huawei.utils.*;
import com.huawei.api.SMException;
import java.util.Date;public class test { public test() {
} public void test_submitShortMessage() {
try {


String dbName = "xxx.xxx.xxx.xxx";
String name = "xxxx";
String pass = "xxxxx";
SMEntry.init(dbName, name, pass); } catch (Exception e) {
System.out.print(e.getMessage());
}
} public static void main(String[] args) {
test mytest = new test();
mytest.test_submitShortMessage();
}
}异常
Exception in thread "main" java.lang.ExceptionInInitializerError
at com.huawei.api.ConnectionMgr.initConn(ConnectionMgr.java:81)
at com.huawei.api.SMEntry.init(SMEntry.java:58)
at test.test_submitShortMessage(test.java:21)
at test.main(test.java:42)
Caused by: java.lang.NullPointerException
at com.huawei.api.smsend.db.DBSQL.<clinit>(DBSQL.java:7)
... 4 more

解决方案 »

  1.   

    不用这个难使的开发包了。找了个php类,直接调用mas数据库里的存储过程替代了。目前发送和接收都不成问题了。谢谢楼上的热心朋友。
      

  2.   


    能不能把你那个php类贴出来啊,我也用那个jar发送时报错了,不知什么原因啊
      

  3.   

    已经找到了api报错的原因,是因为我没有将它的xml文档放对位置,因此程序找不到相应的sql语句,这才报的错。问他们的负责人没提这个茬,后来我是自己用反编译工具一点一点的查到出错原因的。他们说把它放到调用程序的相同目录,于是我把它放到程序目录,也就是src里,没一点作用。结果应该是整个工程的根目录。真实费死劲了,才发现原来就差一点点。楼上提到的那个类其实就是通过php调用存储过程。如果你能个操作他们的库的话,就可以看到发送的存储过程,然后通过php录入参数进行调用就行了。那个类我找不到了。抱歉。
      

  4.   

    我用的只有jar和一个封装好的接口java文件,谋得xml。。还得找供应商问问咯
      

  5.   

    那个xml放那个地方?java.lang.NoClassDefFoundError: Could not initialize class com.huawei.api.smsend.db.DBSQL
    at com.huawei.api.ConnectionMgr.initConn(ConnectionMgr.java:81)
    at com.huawei.api.SMEntry.init(SMEntry.java:58)
    at com.xahg.sendmsg.Sendmsg.init(Sendmsg.java:21)
    at com.xahg.sendmsg.Sendmsg.submitShortMessage(Sendmsg.java:81)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    我现在报这个错
      

  6.   

    这个应该就是smsendsql.xml文档位置的问题。你把它放到工程的根目录下就可以了。
    就是 .project 的所在目录。我开始的时候放在调用方法所在的程序目录,就是src里面,不起作用。放到外面就好了。
      

  7.   

    同感啊,华为的东西杂这么垃圾....不是说里面高手蛮多..
    写的这么垃圾的代码,连smsendsql.xml位置都不能灵活配置.
      

  8.   

    我现在的问题是,数据库能连上,mas也能登陆上,短信发送代码也不报错,但是就是收不到短信,而且通过mas服务器上的WEB客户端发送短信,数据库里也没有记录,请教高人怎么回事
      

  9.   


    朋友,你能详细说下吗?具体位置在发布后再tomcat的那个目录下啊?
      

  10.   

    搞定了: 现在我明确的说:smsendsql.xml文件的位置在你工程发布后的根目录里,
    以tomcat为例,它的确切位置应该和webapps目录平级。
    如:
    tomcat\smsendsql.xml
    tomcat\webapps