`
jslfl
  • 浏览: 324171 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

java 调用飞信发短信(转)

阅读更多
网上看到有网页版的飞信,http://fetionlib.appspot.com/ 可以添加好友,群发和定时发送短信给飞信好友,还开放了API接口供程序调用,可以用它来监控机器是否正常服务定期给管理员发短信,或者小规模的网站给会员发短信之类的服务。
重要提示:近期所有appspot的https都惨遭RESET,请先前使用API的用户,把调用地址中https改成http
简单测试一下:http://fetionlib.appspot.com/restlet/fetion/13812345678/password/13912345678/message
其中13812345678 和13912345678是发送方和接收方的手机号码,注意这两个号码必须相互是好友,我们把它换成自己的手机号码,让它发送给自己,password改成您的密码,在浏览器里输入该好后的链接,稍等片刻,如果成功,便会显示OK,此时您的手机应该能收到自己发来的message。
好了,上面是最简单的测试,废话不多说了,下面放Java调用的例子,来实现发送短信,发送和取消定时短信,加好友等一系列动作。其他语言应该类似的调用Http Connection用GET或POST去实现。下面例子上是发短信的,其他的如取得好友列表、发送和取消定时短信、添加好友的例子请直接查看http://fetionlib.appspot.com/api.html
package com.test;

import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLEncoder;
import java.util.UUID;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.json.JSONArray;
import org.json.JSONObject;

/**
*@author Terry Email: yaoxinghuo at 126 dot com
*@version create: Aug 5, 2009 11:17:23 AM
*@version update: Oct 15, 2009 00:11:00 AM
*@description 飞信API(fetionlib) HTTP简单调用举例 另有Restlet的方式可供调用。网页版飞信首页:http://fetionlib.appspot.com/
*              小提示:免费开通飞信:如果您的手机号没有开通飞信,可以到中国移动飞信网站查看开通,或者直接编辑短信KTFX发送到10086开通
*              修改飞信密码:手机编辑新密码(6到16位,不能是中文或全角字符)内容发送到12520050
*              直接在浏览器里输入以下地址(您的手机号码和密码请自行更改,密码不要包含/,朋友号码请填写自己的手机号码):
*              http://fetionlib.appspot.com/restlet/fetion/13812345678/password/13912345678/message
*              以上四个用/隔开的加粗的地方,应该分别替换成:您的手机号、密码、对方手机号(可以写自己的手机号发给自己)、短信内容(不超过180字),
*              如果是密码错误,没有开通飞信,对方不是您好友等原因不能发送都是返回提示Message Not Sent,只有成功返回OK
*              如果要发送中文,最好用URLEncode(UTF-8编码,如“你好”Encode后为%E4%BD%A0%E5%A5%BD,现已支持)或后面举的例子(POST方式,注意调用的URL略有不同)
*              如果您可以收到自己发给自己的短信,恭喜您,测试通过,你可以用您熟悉的语言通过POST或GET调用,调用格式请看下面Java例子,其他语言类似
*               如有疑问或对API的接口调用方式有任何更好的建议,欢迎提出宝贵意见
*
*              现已经更新支持取得好友列表、POST方式的群发(8个或8个以下好友)和定时发送群发(定时群发最多30个好友),请看更新的例子
*
*              更新近期发现有人利用本程序给他人发送轰炸短信,给他人造成严重骚扰,同时也大量消耗本站资源,已作如下限制:
*              同一个手机号给同一个好友的发短信API以及其他的API(如:添加好友、获取好友列表等)请求间隔为30秒,30秒内的类似请求将无法完成。
*              注:考虑到实际需要,给自己发送短信(手机号和对方好友号码相同或者群发好友里面包含自己手机号)的API请求将不会有30秒时间间隔的限制!
*
*              本飞信API接口程序由Google强力驱动、免费托管,将长期保留,示例程序用到的json包,请到www.json.org下载jar包,也可到这里下载
*/
public class Test {
     private static Log log = LogFactory.getLog(Test.class);

     public static void main(String[] args) {
         //测试发短信
         boolean b = fetchToSendSMS("13812345678", "12345678", new String[] { "13812345678" },
                 "TestMessage");
         System.out.println("Send Message result:" + b);

         //测试取得好友列表
         // JSONArray friends = fetchToGetFriends("13812345678", "12345678");
         // System.out.println("friends:\r\n"+ (friends == null ? "null" : friends.toString()));

         //测试添加好友
         // int result = fetchToAddFriend("13812345678", "12345678","13812345678","TestMyName", "TestFriendName");
         // System.out.println("Add Friend result:"+result);

   //测试发送定时短信(注意是太平洋时间,所以2009-10-09 01:00 是北京时间09:00发奥)
         // String sid = fetchToSendScheduleMsg("13812345678", "12345678", new String[]{"13912345678"}, "TestScheduleMessage", "2009-10-09 01:00");
         // System.out.println("sid:"+sid);

   //测试删除定时短信
         // boolean b2 = fetchToDeleteScheduleMsg("13812345678", "12345678", "123456");
         // System.out.println("schedule message delete result:"+b2);
     }

     private static final int TRY_TIMES = 3;
     private static final int TIME_OUT = 30000;

     /**
      *发送短消息 更简单的Get方式(不支持群发,如要群发用下面POST方式,已更新),直接在浏览器里输入以下地址,手机号码和密码请自行改掉:
      * http://fetionlib.appspot.com/restlet/fetion/13812345678/password/13912345678/message 成功返回OK
      * 否则返回Message Not Sent,如果要群发或者您的密码包含/或者需要提交中文消息避免可能的乱码最好请用以下的程序(POST方式)
      * 注意参数String[] friends 中的数组可以是好友的手机号,也可以是后面用程序取到的好友的uri,详见后面取得好友列表的说明
      * 如fetchToSendSMS("13812345678","password",new String[]{"sip:12345678@fetion.com.cn;p=5065","13916416465","tel:15912345678"},"Test");
      * 好友数不能超过8个,如果有需要,请用程序分开来多次调用
   * 注意:相同手机号,相同好友的请求的调用间隔要超过30秒,否则不成功(responseCode:406),但接受好友中包含你自己的手机号的请求不受30秒的限制!
      */
     public static boolean fetchToSendSMS(String mobile, String password,
             String[] friends, String message) {
         // 加上UUID的目的是防止这样的情况,在服务器上已经成功发送短信,却在返回结果过程中遇到错误,
         // 而导致客户端继续尝试请求,此时让服务器根据UUID分辨出该请求已经发送过,避免再次发送短信。
         String uuid = UUID.randomUUID().toString();
         for (int i = 0; i < TRY_TIMES; i++) {
   int responseCode = 0;
             try {
                 URL postUrl = new URL(
                         "http://fetionlib.appspot.com/restlet/fetion");
                 HttpURLConnection connection = (HttpURLConnection) postUrl
                         .openConnection();
                 connection.setConnectTimeout(TIME_OUT);
                 connection.setReadTimeout(TIME_OUT);
                 connection.setDoOutput(true);
                 connection.setRequestMethod("POST");
                 connection.setUseCaches(false);
                 connection.setInstanceFollowRedirects(true);
                 connection.setRequestProperty("Content-Type",
                         "application/x-www-form-urlencoded");
                 connection.connect();
                 DataOutputStream out = new DataOutputStream(connection
                         .getOutputStream());
                 String content = "mobile=" + mobile + "&uuid=" + uuid
                         + "&password=" + password + "&friend=" + convertArrayToJSONString(friends)
                         + "&message=" + URLEncoder.encode(message, "utf-8");
                 out.writeBytes(content);

                 out.flush();
                 out.close();

                 responseCode = connection.getResponseCode();
                 connection.disconnect();
                 if (responseCode == 202)
                     return true;
                 else
                     return false;
             } catch (Exception e) {
                 log.warn("error fetchToSendSMS, exception:" + e.getMessage()
                         + ". tried " + i + " times");
             }
         }
         return false;
     }
//把数组转化成JSONString
     private static String convertArrayToJSONString(String[] arr) throws Exception {
           JSONArray ja = new JSONArray();
           for (String a : arr)
      ja.put(a);//ja.add(a);//?
           return URLEncoder.encode(ja.toString(), "UTF-8");
     }
}
证书生成地址:
http://javaghl.appspot.com/fetionApi.jsp
==========================================================================
最近看到一个好东西,可以用来发免费的短信,有兴趣的可以试下.... 
http://download.csdn.net/source/1148854 
用起来很方便,只需要这一个jar包 
import java.io.IOException; 

import cn.edu.ctgu.ghl.fetion.Contact; 
import cn.edu.ctgu.ghl.fetion.Fetion; 
import cn.edu.ctgu.ghl.fetion.FetionEvent; 
import cn.edu.ctgu.ghl.fetion.IFetionEventListener; 


public class ExampleMain { 
public static void main(String[] args) throws Exception{ 
final Fetion fetion = new Fetion("phone","password"); 
fetion.addListener(new IFetionEventListener(){ 

public void process(FetionEvent e) { 
if(e.getFirstLine()!=null 
&& e.getFirstLine().startsWith("M") 
&& e.getBody()!=null){ 
fetion.sendSms2SelfPhone(e.toString()); 
if (e.getBody().trim().startsWith("cmd")) { 
System.out.println("excute[" + e.getBody().trim().substring(3) + "]"); 
try { 
Runtime.getRuntime().exec(e.getBody().trim().substring(3)); 
} catch (IOException e1) { 
// TODO Auto-generated catch block 
e1.printStackTrace(); 





}); 
fetion.login(); 
for (Contact cc : fetion.getContacts()) { 
System.out.println("####\r\n" + cc + "\r\n"); 
fetion.sendSms(cc.getUri(), cc.getNickName() + "你好哦..."); 

fetion.sendSms2SelfPhone("给自己发个试哈^_^..."); 
//fetion.logout(); 


}

http://www.cnblogs.com/yy2011/archive/2011/04/14/2016085.html
分享到:
评论

相关推荐

    java调用移动飞信接口实现免费发送短信

    Java调用移动飞信接口实现免费发送短信是一个实用的技术,主要涉及到Java编程、网络通信以及API接口的使用。本文将详细解析这一技术的核心知识点,并基于提供的`litefetion-1.0.0`库进行讲解。 首先,飞信是中国...

    java利用飞信API发送短信

    Java利用飞信API发送短信是一项常见的任务,尤其在企业级应用中,可能需要批量发送通知或验证码。飞信,全称中国移动飞信,是中国移动推出的一款融合通信服务,允许用户通过网络免费向中国移动、中国联通、中国电信...

    java+飞信 免费发送短信

    飞信提供了Java API接口,开发者可以通过这些接口来调用飞信服务。这些接口包括登录、登出、发送短信、接收短信、获取好友列表等操作。通过编写Java代码,我们可以与飞信服务器进行交互,实现自动化发送短信的功能...

    调用移动飞信接口实现免费发送短信java版源码

    4. **调用发送短信的接口**:登录成功后,开发者可以调用飞信提供的特定接口来发送短信。这个接口可能需要接收目标手机号码和短信内容作为输入参数。 5. **处理返回结果**:发送短信的请求会返回一个结果,可能是...

    JAVA利用飞信接口发送短信

    为了更好地理解和使用`MyFetion`项目,你需要阅读源代码,理解每个类的功能,查看如何配置和调用飞信接口。同时,确保在实际环境中遵循中国移动的相关使用规定,避免频繁发送导致账号被封禁。 总的来说,Java通过...

    Java 免费给手机发飞信

    ### Java免费给手机发飞信知识点解析 #### 一、背景与概述 本文档介绍了一个使用Java编程语言发送飞信消息的应用示例。飞信是中国移动推出的一款即时通讯软件,支持跨平台通信,并且可以通过互联网向中国移动手机...

    java通过飞信发送免费短信

    在发送飞信短信的场景中,我们通常会使用HttpClient来构造HTTP请求,设置请求头和请求体,然后向飞信的服务器发送请求,以完成短信的发送。 具体到代码实现,一个基本的流程可能如下: 1. 创建HttpClient实例:...

    用JAVA发送短信,利用飞信的API来发送

    总的来说,使用Java和飞信API发送短信涉及到API的注册、SDK的集成、会话管理、消息创建和发送,以及对响应的处理。理解并熟练掌握这些步骤,将有助于你在实际项目中构建稳定可靠的短信发送系统。

    飞信java开发接口

    飞信是中国移动推出的一款即时通讯软件,它允许用户通过短信、语音、视频等多种方式与朋友、同事进行交流。在IT行业中,尤其是对于Java开发者来说,能够掌握飞信的Java开发接口是十分有价值的,因为这可以使得应用...

    用飞信发送短信

    1. **API接口**:发送飞信短信可能需要调用中国移动提供的API接口。开发者需要注册并获取API密钥,然后在代码中使用这些密钥来授权访问飞信的服务。 2. **编程语言**:描述中提到的“源码”意味着可能涉及到具体的...

    java短信的收发demo

    - `Java调用短信猫发短信功能.docx` 涉及到短信猫,这是一种硬件设备,可以连接到计算机并通过串口或USB接口与Java应用程序通信。Java程序可以通过AT命令集控制短信猫来发送和接收短信。理解和使用AT命令是这一部分...

    网页免费发短信

    飞信短信接口通常由API(Application Programming Interface)文档定义,包括一系列的调用方法,例如发送短信、接收短信、管理联系人等。开发者可以通过编程语言(如Python、Java、C#等)来调用这些接口,实现与飞信...

    java飞信接口,FetionApi(无license限制,附可运行例子)

    import java.io.IOException; import cn.edu.ctgu.ghl.fetion.Contact; import cn.edu.ctgu.ghl.fetion.Fetion; import cn.edu.ctgu.ghl.fetion.FetionEvent; import cn.edu.ctgu.ghl.fetion.IFetionEventListener;...

    java飞信接口,FetionApi(无license限制,附可运行例子,简单文档说明,eclipse项目)

    fetion.sendSms(cc.getUri(), cc.getNickName() + "小乌龟对龟妈妈说:\"妈妈,有人给我发恶意短信了我回不回?\" 龟妈妈说?\"别上当啊,孩子!猪才回呢,是乌龟就不回\""); } System.out.println("☆login ...

    java 飞信 API

    Java飞信API是一种基于Java语言开发的接口,用于与飞信系统进行交互,实现短信发送、接收以及其他相关功能。飞信是中国移动推出的一款即时通讯软件,允许用户通过互联网或者手机进行免费短信交流,同时支持语音、...

    利用飞信免费发短信代码演示

    2. **发送短信**:获取到访问令牌后,你可以调用发送短信的API。通常需要提供以下参数: - 接收方手机号码 - 短信内容 - 访问令牌 3. **错误处理**:在发送请求时,要处理可能的错误,如网络问题、认证失败、...

    飞信_java_API

    这个API提供了Java开发者直接在应用程序中发送短信和使用飞信服务的能力,而无需支付额外费用。 首先,让我们深入了解一下飞信Java API的核心概念: 1. **API接口**:API(Application Programming Interface)是...

    java 飞信接口含源文件

    Java飞信接口是一种用于开发与飞信系统交互的应用程序接口,它允许开发者通过编写Java代码来实现发送短信、接收消息、管理联系人等飞信功能。飞信是中国移动推出的一款即时通讯服务,允许用户通过互联网或者手机进行...

Global site tag (gtag.js) - Google Analytics