网上看到有网页版的飞信,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");
     }

}

程序调用飞信API发送免费短信(JAVA例子,其他语言一样用)相关推荐

  1. java 调用微信api发送消息

    要在 Java 中调用微信 API 发送消息,你需要做的第一步是在微信公众平台中注册自己的公众号,然后获取到自己的 AppID 和 AppSecret. 然后你可以使用微信公众平台提供的开发文档,来了 ...

  2. 【ASP.NET Web API教程】3.3 通过WPF应用程序调用Web API(C#)

    注:本文是[ASP.NET Web API系列教程]的一部分,如果您是第一次看本博客文章,请先看前面的内容. 3.3 Calling a Web API From a WPF Application ...

  3. C#调用新浪微博API发送消息成功

    成功一小步,用C#调用新浪微博API发送消息成功,庆祝一下.其实没什么难的,主要是看新浪的开发文档受到了误导. 在新浪的文档里面的参数从说明到例子都是组合参数,并且遗漏了一个参数说明,调试的时候查看错 ...

  4. nonebot2调用文本API发送随机文本

    前言 我们经常可以看到能够发送随机文本的QQ机器人,接下来我们会学习到如何编写这种插件 效果展示 正文 文本API选择 文本API可以按照其返回数据的方式分成几种,我这里使用的API的类型是直接返回文 ...

  5. Python调用飞信接口发送短信

    主要参考了两篇文章:(对原作者表示感谢~) 发送飞信的Python脚本:http://www.cnblogs.com/fatway/archive/2009/08/07/1693813.html 中国 ...

  6. python飞信api_Python调用飞信接口发送短信

    # -*- coding:utf-8 -*- # file: SendFetion.py # by Lee 2013-9-18 """------------------ ...

  7. python飞信api_Python调用飞信接口发送短信 | 学步园

    主要参考了两篇文章:(对原作者表示感谢~) 2013年9月18日亲测可用. 下面是代码:[使用前将账号密码换为自己的] # -*- coding:utf-8 -*- # file: SendFetio ...

  8. 【微信小程序调用百度API实现图像识别功能】----项目实战

    本章主要讲述: 如何更快的上手小程序 如何搭建一个页面以及跳转到另一个页面 如何调用百度API接口实现图像识别技术 如何在微信小程序的后台添加合法域名 私信获取源码,有问题可以关注留言或私信,计算机毕 ...

  9. JAVA套料程序_Nest4J是一款基于Java作为开发语言的Nest算法包

    Nest4J Nest4J是一款基于Java作为开发语言的Nest算法包.可以看做一款能在服务端进行运行计算的Nest算法库. 基于SVGNest进行了Java化的改造. 同样这也作为了我本科的毕业设 ...

最新文章

  1. 企业运维——机房建设的一些建议
  2. 闪迪U3利用工具U3-Pwn
  3. 从变量到封装:一文带你为机器学习打下坚实的Python基础 By 机器之心2017年10月13日 10:43 本文整体梳理了 Python 的基本语法与使用方法,并重点介绍了对机器学习十分重要的且常
  4. java动态定义泛型_关于oop:具有动态性质且可完全自定义的Java泛型编程
  5. 使用GitLab CI和Docker进行容器应用自动化部署
  6. SAP Spartacus index.html 里的 occ-backend-base-url 如何被解析的?
  7. 使用Apache FtpServer
  8. opencv 图像卷积运算函数filter2D()
  9. QT 编写 STC系列MCU烧录软件
  10. 八皇后问题----Java实现
  11. 公司测试用例评审的简单介绍
  12. 尚硅谷李立超老师讲解web前端---笔记(持续更新)
  13. 中国人误传千年的七句话
  14. QT+opencv学习笔记(5)——霍夫直线检测、圆检测及椭圆检测
  15. Windows8 最新泄漏版试用体验与下载
  16. 别再恐惧 IP 协议(万字长文 | 多图预警)
  17. 计算机从bios到操作系统,高手进!!计算机开机后在进入操作系统前BIOS在进行什么检测工作?...
  18. 字符串解压缩类库(zip、GZIP、QuickLz、snappy、lzf、jzlib)介绍
  19. 如何做好一名软件实施顾问
  20. 【看论文】之《番茄采摘机器人关键技术研究_王丽丽 》

热门文章

  1. 追求极致的匠心:ThinkPad X280商用本评测体验
  2. 电脑回收站清空的文件怎么恢复?
  3. 转:显示技术中的帧、帧数、帧率、 FPS
  4. Informatica十年深耕细作,成就云数据管理领航者
  5. cesium 添加echarts
  6. 牵手二青会,如米科技绽放山西文化大美
  7. 服务器中的热修复怎么做,Android 热修复(全网最简单的热修复讲解)
  8. Python面向对象编程-面向对象
  9. android 手机 华为c8650e 无法在mac下 utuntu 下调试 googole调试模式 #*#*
  10. 2007年十大时尚流行发型