`
yaoxinghuo
  • 浏览: 30225 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

程序调用飞信API发送免费短信(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");
     }

}

 

分享到:
评论
5 楼 w156445045 2013-04-15  
2013年4月份测试不可用,
4 楼 程俊2009 2012-03-05  
URL postUrl = new URL("http://fetionlib.appspot.com/restlet/fetion"); 这个再确认下
3 楼 yikao0929 2011-04-19  
现在还能用吗?我怎么不能用??????????
2 楼 lauphai 2010-12-16  
打印 Send Message result:false

压根就不成功
1 楼 hanz188 2010-08-12  
如果好友列表部分的宽度与高度可以随着好友人数的变化而自适应就好了,我的好友人数(包括我自己)为32人,将列表的div的style修改为style="overflow: auto; position: relative; height: 750px; width: 300px;"之后,横向滚动条与纵向滚动条就都没有了,页面看起来比较整齐。

相关推荐

    java调用webapi

    Java调用WebAPI是开发过程中常见的任务,尤其是在分布式系统或者微服务架构中,不同服务间通过API进行数据交互。WebAPI通常指的是Web应用程序提供的接口,允许客户端(如Java应用)发送HTTP请求并接收响应。本压缩包...

    java+飞信 免费发送短信

    Java+飞信是一种结合了Java编程语言和中国移动的飞信服务来实现免费发送短信的技术方案。飞信是中国移动推出的一款即时通讯应用,它允许用户通过网络免费向中国移动手机号码发送短信,同时也支持语音、图片等多种...

    Java中调用API发送短信验证码

    java中调用API实现发送短信验证码。

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

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

    PB实现调用短信平台API发送短信

    标题 "PB实现调用短信平台API发送短信" 描述了一个使用PowerBuilder(PB)9版本或更高版本来调用短信平台API以发送短信的应用场景。这个应用可能是一个软件或插件,可以与其他短信服务平台进行集成,并且具备一定的...

    华为短信api的java源码

    3. **Java源码**:表示提供的代码是用Java编程语言编写的,这使得开发者可以更好地理解和定制短信服务的实现。Java的特性使其适合跨平台的开发,并且具有丰富的库和框架支持。 4. **`smproxy`**:这个文件可能是...

    Java通过JNA调用系统API

    本文将详细介绍如何使用Java通过JNA调用系统API,以Windows系统为例,重点讲解如何调用`Kernel32.dll`中的`GetLocalTime()`, `GetSystemTime()` 和 `SetLocalTime()` 方法。 1. **Java Native Access (JNA)**: JNA...

    PB调用飞信免费发短信程序

    【标题】"PB调用飞信免费发短信程序"揭示了一个使用PowerBuilder(PB)集成开发环境来调用飞信应用程序实现免费发送短信的技术方案。PowerBuilder是Sybase公司推出的一种面向对象的可视化编程工具,尤其适合于数据库...

    使用java调用jenkins api

    Java调用Jenkins API是一个常见的自动化任务执行场景,特别是在持续集成和持续部署(CI/CD)流程中。Jenkins作为一个开源的持续集成工具,提供了丰富的API接口,允许开发者通过编程方式与Jenkins服务器进行交互。...

    java代码实现发送短信,中国电信smgp协议api

    在中国电信的SMGP(Short Message Gateway Protocol)协议中,发送短信功能是通过API接口来实现的,这在Java编程环境中尤为常见。SMGP是专为短消息服务设计的一种通信协议,用于连接短信中心(SMSC)和短信网关,...

    免费发短信飞信API ASP.NET源码

    在这种情况下,飞信API提供了一个免费的途径来发送短信,特别适合测试或小型项目使用,但可能有发送量的限制。 5. **手机验证码**:手机验证码是一种安全机制,常用于验证用户身份,例如在注册新账号或进行敏感操作...

    飞信(Fetion)短信发送接口API

    飞信(Fetion)短信发送接口API是一个用于在无需打开飞信客户端的情况下,通过编程方式向飞信联系人发送短信的技术。FetionLite是一个轻量级的飞信客户端软件,它的主要功能就是实现这一服务,使得开发者可以通过...

    Java调用HTTP发送短信接口小例子

    一个简单的调用HTTP接口发送短信的小例子 直接看代码就能看懂

    JAVA调用webApi完整jar包 httpclient 等等

    java调用.NET webAPI httpclient-4.2.5.jar httpclient-cache-4.2.5.jar httpcore-4.2.4.jar httpmime-4.2.5.jar fluent-hc-4.2.5.jar commons-codec-1.6.jar

    unity调用Android Api实现短信发送和震动功能

    为了在Unity中调用Android的API,我们需要使用Unity的插件系统,通过Java Native Interface (JNI) 来创建一个桥梁。这通常涉及到以下几个步骤: 1. **创建Android Java类**:在Android Studio中,创建一个新的Java...

    发送短信API接口及其例子程序

    API接口的例子程序,请参看本文章:清扬短信服务器发送短信API接口说明和例子程序,下载例子:qySrc_smDemo,可以编译测试。该例子qySrc_smDemo利用动态装载将dll装入,找到相关函数地址,即可在后面调用。在使用时,...

    java实现短信发送功能(java原生API实现)

    8. **线程安全与并发**:如果需要大量并发发送短信,考虑使用线程池或者异步处理,避免过多的并发请求导致服务器压力过大。 9. **日志记录**:为了调试和追踪,添加日志记录,记录每次请求和响应的详细信息。 在...

    java通过飞信发送免费短信

    在描述中提到的“发送信息”、“搜索好友”和“添加好友”等功能,意味着飞信的API不仅仅支持发送短信,还可能提供了其他用户管理操作。例如,搜索好友可能需要调用一个搜索接口,传入关键词或好友的手机号;添加...

    易语言JAVA调用 例子

    易语言JAVA调用是将Java代码与易语言程序进行交互的一种技术,这使得开发者能够利用易语言编写主程序,同时利用Java的丰富库资源。在本例子中,我们看到几个关键文件,它们分别是: 1. **Test.class**:这是一个...

    java调用高德公交api(java源码)

    在Java编程语言中,调用高德公交API可以实现丰富的公共交通功能,如线路查询、最优换乘策略计算、两点之间的距离测量(包括步行距离)。以下将详细介绍如何利用Java实现这些功能,以及高德公交API的基本原理和使用...

Global site tag (gtag.js) - Google Analytics