编程实现短信发送三种方式

来源:互联网 发布:读取身份证信息软件 编辑:程序博客网 时间:2024/05/27 20:08


2014年09月05日 ⁄ 综合 ⁄ 共 3138字 ⁄ 字号 小 中 大 ⁄ 评论关闭

方案一: 利用sina webservice发送短信

通过编程实现短信息的发送是一件比较繁琐的事情,目前,解决方法是通过计算机和手机的连线,使用手机编程语言编写相关的短信程序来实硬件设施,并且必须具备手机编程的相关知识。本实例通过Web
Service技术中接口实现远程访问现有的短信发送服务器,并通过调用服务器的方法来发送短信。

WebService的服务器地址是        http://smsinter.sina.com.cn/ws/smswebservice0101.wsdl。这个Web Servic仅提供了一个发送短信的方法“sendXml”。此方法的语法格式如下:

string sendXml (carrier , userid , password ,mobilenumber , content , msgtype )

endXml方法中的6个参数均为string类型,并且sendXml方法的返回值也是string类型。
以下是sendXml方法中的6个参数的具体说明如下:
· carrier:运营商名称,使用时此参数并没有什么具体要求,即这里面可以随便输入,输入的字符串也不会在对方手机中有任何显示。
· userid:在新浪网上注册的手机号。
· password:在新浪网成功注册手机后,新浪网反馈回来的密码。
· mobilenumber:要发送短信到对方的手机号码。
· content:所要发送短消息的内容。
· msgtype:发送短消息的类型。
调用此Web Service只需在VS2005.NET中直接“添加Web引用”,把该地址输入即可。
注意:使用新浪服务发送手机短信时,需要在新浪网站上进行手机注册,注册网址为http://sms.sina.com.cn/。
2.补充说明
在使用Web Service发送手机短信时,必须要保证本地计算机与互联网相连,这样才能调用新浪提供的Web Service发送短信。如果本地计算机没有上网,则运行代码会出现错误。

方案二: 利用短信猫硬件设备进行发送

所谓短信猫,其实是一种用来收发短信的设备,他和我们用的手机一样,需要手机SIM卡的支持,在需要收发短信的时候,在短信猫里面插入一张我们平时用的手机卡,插上电源,通过(USB或者串口、网口)数据线和电脑相连,在电脑的应用管理软件中就可以实现短信收发的功能。

方案三:利用中国网建SMS短信平台进行发送

http://sms.webchinese.cn/default.shtml

MS短信通API下行接口参数 短信上行回复API
GBK编码发送接口地址:

http://gbk.sms.webchinese.cn/?Uid=本站用户名&Key=接口安全密码&smsMob=手机号码&smsText=短信内容 

UTF-8编码发送接口地址:

http://utf8.sms.webchinese.cn/?Uid=本站用户名&Key=接口安全密码&smsMob=手机号码&smsText=短信内容

获取短信数量接口地址(UTF8):

http://sms.webchinese.cn/web_api/SMS/?Action=SMS_Num&Uid=本站用户名&Key=接口安全密码

获取短信数量接口地址(GBK):

http://sms.webchinese.cn/web_api/SMS/GBK/?Action=SMS_Num&Uid=本站用户名&Key=接口安全密码

提示:HTTP调用URL接口时, 参数值必须URL编码后再调用

参数变量 说明
Gbk编码Url http://gbk.sms.webchinese.cn/
Utf-8编码Url http://utf8.sms.webchinese.cn/
Uid 本站用户名(如您无本站用户名请先注册)[免费注册]
Key 注册时填写的接口秘钥(可到用户平台修改接口秘钥)[立刻修改]
如需要加密参数,请把Key变量名改成KeyMD5,
KeyMD5=接口秘钥32位MD5加密,大写。
smsMob 目的手机号码(多个手机号请用半角逗号隔开)
smsText 短信内容,最多支持300个字,普通短信70个字/条,长短信64个字/条计费
多个手机号请用半角,隔开
如:13888888886,13888888887,1388888888 一次最多对100个手机发送
短信内容支持长短信,最多300个字,普通短信66个字/条,长短信64个字/条计费

短信发送后返回值 说 明
-1 没有该用户账户
-2 接口密钥不正确 [查看密钥]
不是账户登陆密码
-21 MD5接口密钥加密不正确
-3 短信数量不足
-11 该用户被禁用
-14 短信内容出现非法字符
-4 手机号格式不正确
-41 手机号码为空
-42 短信内容为空
-51 短信签名格式不正确
接口签名格式为:【签名内容】
大于0 短信发送数量
注:调用API接口,请登录平台,申请106网关发送,即发即到!
  发送测试短信请勿输入:短信测试等词语,请直接提交您要发送的短信内容;
  接口发送短信时请在内容后加签名:【XX公司或XX网名称】,否者会被屏蔽。
  短信签名可在用户平台平台上设置,也可以在短信内容后,直接加入。

java 程序示例:

import java.io.UnsupportedEncodingException;

import org.apache.commons.httpclient.Header;

importorg.apache.commons.httpclient.HttpClient;

importorg.apache.commons.httpclient.NameValuePair;

importorg.apache.commons.httpclient.methods.PostMethod;

 

public class SendMsg_webchinese {

 

public static void main(String[] args)throwsException

{

 

HttpClient client = new HttpClient();

PostMethod post = newPostMethod("http://gbk.sms.webchinese.cn");

post.addRequestHeader("Content-Type","application/x-www-form-urlencoded;charset=gbk");//在头文件中设置转码

NameValuePair[] data ={ newNameValuePair("Uid", "本站用户名"),new NameValuePair("Key", "接口安全密码"),new NameValuePair("smsMob","手机号码"),new NameValuePair("smsText","短信内容")};

post.setRequestBody(data);

 

client.executeMethod(post);

Header[] headers = post.getResponseHeaders();

int statusCode = post.getStatusCode();

System.out.println("statusCode:"+statusCode);

for(Header h : headers)

{

System.out.println(h.toString());

}

String result = newString(post.getResponseBodyAsString().getBytes("gbk"));

System.out.println(result);

 

 

post.releaseConnection();

 

}

 

}

经本人测试,本方法发送短信延迟很大,而且存在发送丢失的情况。

 

0 0