⑴ org.smslib.GatewayException: Comm library exception: java.lang.reflect.InvocationTargetException
好久没有弄了,换工作了资料也都丢失了。。。,你报的这个异常可能是jar包和配置文件不全或者找不到路径所致。
⑵ linux下java开发短信系统,发送信息到手机显示乱码
首先怀疑字符集的问题。
另外可以把代码放到windows环境下运行一下,以排除是不是操作系统造成的影响。
我曾经用SMSLib这个java库开发过一个短信猫的程序,字符集是utf8的,windows服务器上运行没问题。
⑶ 使用java如何开发一款向手机定时发送短信的程序
需要一个发短信的设备,比如短信猫。去网上找一下,有很多。短信猫的卖家可以给你提供java编程接口,但一般都是要收费。如果你不想额外花钱买java接口,你可以去搜一个叫做SMSLib的开源库。然后利用这个开源库或者卖家给你的接口来开发你的java程序。
⑷ 如何用Java实现短信自动发送功能
Java实现短信自动发送功能主要是用httpclient实现的,要有发短信的端口。
1、硬件设备是一个3G网卡;
2、软件方面需要sun提过的java底层通信common包;
3、此外还需要第三方库SMSLib,这个是开源项目,主要用于实现java发短信的功能;
主要代码如下:
HttpClientclient=newHttpClient();
PostMethodpost=newPostMethod(
"http://cf.lmobile.cn/submitdata/service.asmx/g_Submit");
post.addRequestHeader("Content-Type",
"application/x-www-form-urlencoded;charset=utf-8");//在头文件中设置转码
NameValuePair[]data={newNameValuePair("sname","*****"),
newNameValuePair("spwd","*****"),
newNameValuePair("scorpid","*****"),
newNameValuePair("sprdid","*****"),
newNameValuePair("sdst","*****"),
newNameValuePair("smsg","*****")};
post.setRequestBody(data);
client.executeMethod(post);
Header[]headers=post.getResponseHeaders();
intstatusCode=post.getStatusCode();
System.out.println("statusCode:"+statusCode);
for(Headerh:headers){
System.out.println(h.toString());
}
Stringresult=newString(post.getResponseBodyAsString().getBytes("utf-8"));
System.out.println(result);
post.releaseConnection();
⑸ java开发 实现发送短信的功能,报错信息 javax.comm.NoSuchPortException 哪位高手帮我解决解决。谢谢!急
端口号错误,换一个端口号
⑹ 如何使用smslib中的回调函数
avaComm只支持32位的windows,我们是windows server 2008 64位版本,只能选择RxTx来与串口通信。最终依赖jar包有4个:
windows和串口通讯还需要依赖操作系统的功能,所以 RxTx还需要将rxtxParallel.dll 和 rxtxSerial.dll 放到jdk目录中,官方的安装说明非常详细了。
rxtxSerial.dll ---> <JAVA_HOME>\jre\bin
rxtxParallel.dll ---> <JAVA_HOME>\jre\bin
RXTXcomm.jar只要放到classpath下就行,不用非得放到jre\lib\ext下面
接下来就可以写代码了,代码其实也不复杂:
package com.piaohan.sms;
import org.smslib.Message.MessageEncodings;
import org.smslib.OutboundMessage;
import org.smslib.Service;
import org.smslib.modem.SerialModemGateway;
public class SMSDemo {
public static void main(String args[]) throws Exception {
// ---------------创建串口设备,如果有多个,就创建多个--------------
// 1、你自己连接网关的id
// 2、com口名称,如COM1或/dev/ttyS1(根据实际情况修改)
// 3、串口波特率,如9600(根据实际情况修改)
// 4、开发商,如Apple
// 5、型号,如iphone4s
SerialModemGat www.hbbz08.com eway gateway = new SerialModemGateway("SMS" , "COM3",
9600, "", "");
gateway.setInbound( true); // 设置true,表示该网关可以接收短信
gateway.setOutbound( true); // 设置true,表示该网关可以发送短信
// -----------------创建发送短信的服务(它是单例的)----------------
Service service = Service. getInstance();
// ---------------------- 将设备加到服务中----------------------
service.addGateway(gateway);
// ------------------------- 启动服务 -------------------------
service.startService();
// " , "Hello World);
msg.setEncoding(MessageEncodings. ENCUCS2);"
service.sendMessage(msg);
// ------------------------- 关闭服务 -------------------------
service.stopService();
}
}
⑺ 如何用java的web程序实现短信业务
看你要如何实现了,简单的使用GSM猫,这个需要通过串口向猫发送命令,然后由猫来负责发送和接收短信。
另外可以直接向移动申请短信服务,通过他们提供的短信接口(CMPP3.0)发送和接收短信,大型的短信应用都是通过这种方式。不过这种方式,如果你的短信量达不到一定数量,是不会给你开通的。那样,你可能需要自己去找其它服务商代理了。
我以前做过一个项目,就是应为短信量不够,没有开通短信网关服务,没有办法用猫的形式做的。
不过,不要向我要代码,涉及到保密。当然代码很简单,就是熟悉你选用的猫的串口协议,然后利用楼上提到的java通信API通过串口发送和接收数据就可以了。
补充回答:
需要Sun的通信API http://java.sun.com/procts/javacomm/
如果你需要,可以留下mail,我可以发给你。
⑻ SMSLib配置好环境变量,检测运行出现问题!
路径上存在问题,你再检查一下吧
⑼ 如何用Java实现短信自动发送功能
方法一:
1.web.xml中配置listener
<listener>
<listener-class>
cn.com.jxlife.shs.web.action.csinquiry.surrender.MyListener
</listener-class>
</listener>
2.创建listener
import java.util.Timer;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
public class MyListener implements ServletContextListener {
private Timer timer = null;
@Override
public void contextInitialized(ServletContextEvent sce) {
timer = new Timer(true);
//设置任务计划,启动和间隔时间
timer.schele(new MyTask(), 0, 3*60*1000);
//3分钟
//timer.schele(new MyTask(), 0, 3*60*1000);
//在1秒后执行此任务,每次间隔2秒
//timer.schele(new MyTask(), 1000, 2000);
}
@Override
public void contextDestroyed(ServletContextEvent sce) {
timer.cancel();
}
}
3.创建启动的类MyTask
import java.util.Date;
import java.util.TimerTask;
public class MyTask extends TimerTask {
@Override
public void run() {
System.out.println("call at " + (new Date()));
}
}
方法二:
spring 下实现定时工作的调度框架quartz
· 1。从http://quartz-scheler.org/下载quartz的开源包
quartz-1.7.3.tar.gz
3.07M
· 2。从quartz-1.7.3.tar.gz 找到quartz-1.7.3.jar,放到项目的classpath下
(放到webroot/WEB-INF/lib)下
· 3。定义一个需要时间调度的程序
package com.machome.quartz;
public class CustomJob1 {
public void onTimeWork() {
System.out.println("数据备份任务启动");
System.out.println("...");
System.out.println("数据备份任务完成");
}
}
· 4。剩余的工作就都在spring xml文件里完成了
<!-- 被调度的bean -->
<bean id="job1" class="com.machome.quartz.CustomJob1"></bean>
<!-- 定义任务对象 -->
<bean id="jobtask1"
class="org.springframework.scheling.quartz.">
<!-- 被调度的bean -->
<property name="targetObject">
<ref bean="job1" />
</property>
<!-- 被调度的bean中的被调度的方法 -->
<property name="targetMethod">
<value>onTimeWork</value>
</property>
</bean>
<!-- 定义触发对象 -->
<bean id="trigger1"
class="org.springframework.scheling.quartz.CronTriggerBean">
<!-- 任务对象 -->
<property name="jobDetail">
<ref bean="jobtask1" />
</property>
<!-- cron表达式 -->
<property name="cronExpression">
<value>10,15,20,25,30,35,40,45,50,55 * * * * ?</value>
</property>
</bean>
<!-- 调度对象 -->
<!-- 如果将lazy-init='false'那么容器启动就会执行调度程序 -->
<bean id="scheler" lazy-init="false"
class="org.springframework.scheling.quartz.SchelerFactoryBean">
<!-- 触发对象 -->
<property name="triggers">
<list>
<ref bean="trigger1" />
</list>
</property>
</bean>
· 5。 将spring 项目部署到TOMCAT或JBOSS服务器上
deploy项目
重启TOMCAT server
· 6。看结果:
cron表达式参考:Quartz的cron表达式
⑽ org.smslib.GatewayException: Comm library exception: java.lang.reflect.InvocationTargetException
我今天也碰到这个异常,是因为我在用java代码测试发送短信之前,打开了超级终端(发送AT指令的)测试发送短信,用超级终端测了后忘记断开连接及关闭超级终端,这样超级终端会一直占用这个COM口,所以会出现上述异常,断开超级终端的连接后再用Java代码发送就没这个异常了。