`

飞信API(fetionlib) HTTP简单调用举例

    博客分类:
  • Java
阅读更多

转摘:https://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 email: yaoxinghuo at 126 dot com
 *@version create: Aug 5, 2009 11:17:23 AM
 *@version update: Oct 28, 2009 00:11:00 AM
 *@description 飞信API(fetionlib) HTTP简单调用举例 另有Restlet的方式可供调用。网页版飞信首页:http://fetionlib.appspot.com/或http://fetion.xinghuo.org.ru/
 *              小提示:免费开通飞信:如果您的手机号没有开通飞信,可以到中国移动飞信网站查看开通,或者直接编辑短信KTFX发送到10086开通
 *              修改飞信密码:手机编辑新密码(6到16位,不能是中文或全角字符)内容发送到12520050
 *
 *              2009.11.23更新:已增加简易版飞信界面,可以使用iframe嵌套或者直接使用提供的HTML代码粘贴到您的网页,详情点击http://fetion.xinghuo.org.ru/simple_fetion.html
 *
 *              直接在浏览器里输入以下地址(您的手机号码和密码请自行更改,密码不要包含/,朋友号码请填写自己的手机号码):
 *              http://fetionlib.appspot.com/restlet/fetion/13812345678/password/13912345678/message
 *              或http://fetion.xinghuo.org.ru/restlet/fetion/13812345678/password/13912345678/message
 *              以上四个用/隔开的加粗的地方,应该分别替换成:您的手机号、密码、对方uri、短信内容(不超过180字),
 *              注意:对方uri可以写自己的手机号发给自己,最好不要使用对方手机号而使用uri,用下面介绍的获取好友来获取,移动已不提供支持手机号发送,不容易发送成功!
 *              如果是密码错误,没有开通飞信,对方不是您好友等原因不能发送都是返回提示Message Not Sent,只有成功返回OK
 *              如果要发送中文,最好用URLEncode(UTF-8编码,如“你好”Encode后为%E4%BD%A0%E5%A5%BD)或后面举的例子(POST方式,注意调用的URL略有不同)
 *              如果您可以收到自己发给自己的短信,恭喜您,测试通过,你可以用您熟悉的语言通过POST或GET调用,调用方式请看下面Java例子,其他语言类似
 *              注意,如果您使用Eclipse等IDE,最好文本源代码编码为UTF-8,否则可能得到中文信息产生乱码。
 *              如有疑问或对API的接口调用方式有任何更好的建议,欢迎到首页留言
 *
 *              本飞信API包括的所有功能为:1)获取好友列表 2)发送即时短信 3)发送定时短信 4)删除定时短信 5)邀请添加好友 6)测试能否登录 7)取得好友回复消息
 *              调用方式支持GET和POST,POST方式还支持群发(8个或8个以下好友)和定时群发(定时群发最多30个好友),请看下面例子
 *
 *              近期发现有人利用本程序给他人发送轰炸短信,给他人造成严重骚扰,同时也大量消耗本站资源,已作如下限制:
 *              同一个手机号给同一个好友的发短信API以及其他的API(如:添加好友、获取好友列表等)请求间隔为30秒,30秒内的类似请求将无法完成。
 *              注:考虑到实际需要,给自己发送短信(手机号和对方好友号码相同或者群发好友里面包含自己手机号)的API请求将不会有30秒时间间隔的限制!
 *
 *              重要提示:近期所有appspot有一个IP被封锁,请先前使用API的用户,把调用地址中http://fetionlib.appspot.com改成http://fetion.xinghuo.org.ru
 *
 *              本飞信API接口程序由Google强力驱动、免费托管,将长期保留,示例程序用到的json包,请到www.json.org下载jar包,也可到这里下载
 */
public class Test {
    private static Log log = LogFactory.getLog(Test.class);

    public static void main(String[] args) {
        //测试发短信,注意:相同手机号,相同好友的请求的调用间隔要超过30秒(除非好友中包含你自己的手机号),否则不成功(responseCode:406)
        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","自己姓名", "对方姓名");
        // 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", new String[]{"aglmZXRpb25saWJyGgsSB0FjY291bnQYAQwLEgdNZXNzYWdlGCQM")};
        // System.out.println("schedule message delete result:"+b2);

        //测试能否登录(以测试密码是否正确)
        // boolean b3 = fetchToLoginTest("13812345678", "12345678"};
        // System.out.println("login test result:"+b3);

        //测试取得好友回复消息
        // JSONArray messages = fetchToCheckMessages("13812345678", "12345678");
        // System.out.println("messages:\r\n"+ (messages == null ? "null" : messages.toString()));

    }

    private static final int TRY_TIMES = 3;
    private static final int TIME_OUT = 30000;
    private static final String BASE_URL = "http://fetionlib.appspot.com"; //BASE_URL 目前用http://fetion.xinghuo.org.ru 比较稳定

    /**
     *发送短消息 更简单的Get方式(中文请先URLEncode,不支持群发,如要群发用下面POST方式,已更新),直接在浏览器里输入以下地址,手机号码和密码请自行改掉:
     * http://fetion.xinghuo.org.ru/restlet/fetion/13812345678/password/13912345678/message 成功返回OK
     * 否则返回Message Not Sent,如果要群发或者您的密码包含/或者需要提交中文消息避免可能的乱码最好请用以下的程序(POST方式)
     *@param friends
     *            短信接收方的好友们
     * 注意参数String[] friends 中的数组是后面用程序取到的好友的uri(最好不要使用手机号而使用uri,移动已不支持手机号发送,不容易发送成功),详见后面取得好友列表的说明
     * 如fetchToSendSMS("13812345678","password",new String[]{"sip:12345678@fetion.com.cn;p=5065","13912345678","tel:15912345678"},"Test");
     * 好友数不能超过8个,如果有需要,请用程序分开来多次调用
     * 注意:相同手机号,相同好友的请求的调用间隔要超过30秒,否则不成功(responseCode:406),但接受好友中包含你自己的手机号的请求不受30秒的限制!
     * 具体responseCode的代码含义:202-成功 400-参数格式错误 401-密码错误 404-可能不是好友等原因无法发送成功 406-太频繁 408-超时 500-服务器错误 503-系统维护
     *@param message
     *            短信内容,字数不能超过180字
     */
    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(BASE_URL + "/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;
    }

    /**
       *取得好友列表 GET方式为:
       * http://fetion.xinghuo.org.ru/restlet/fetion/friendsList/13812345678/password
       * 成功将返回JSON格式的好友列表,如果您不了解JSON格式,请先网上查阅相关知识,
       * 如:[{"nickname":"Jerry","localname":"小张","uri":"sip:123456@fetion.com.cn;p=6012","mobile":"13912345678"}]
       * 其中nickname是对方给自己设置的昵称,localname是您给对方设置的名字,mobile是对方公开的手机号,uri是该用户的标识符,可用于发送短信时传递的参数
       * 注意nickname、localname、mobile 这三个字段可能为空,如果为空,将不会再JSON中显示!
       * 如果因得到好友的信息是乱码而报错,请在IDE中将源码编码改成UTF-8,或者手动修改读取Stream的编码方式为UTF-8
       * 不成功返回空白
       * 注意:相同手机号调用间隔要超过30秒,否则不成功(responseCode:406)
       *
       * 您从JSONArray中取得的uri,如sip:123456@fetion.com.cn;p=6012或可能为tel:13912345678,
       * 可直接作为参数传入上面的例子中发送短信, 如果有mobile,也可以传入mobile如13916416465,
       * 不过有些时候,对方不公开手机号,便无法获取手机号,只有通过uri来发送短信
       *
       */
      public static JSONArray fetchToGetFriends(String mobile, String password) {
            String uuid = UUID.randomUUID().toString();
            for (int i = 0; i < TRY_TIMES; i++) {
                  try {
                        URL postUrl = new URL(BASE_URL + "/restlet/fetion/friendsList");
                        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;
                        out.writeBytes(content);

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

                        int responseCode = connection.getResponseCode();
                        if (responseCode == 202) {
                              BufferedReader reader = new BufferedReader(
                                          new InputStreamReader(connection.getInputStream(), "UTF-8")); // 读取结果
                              StringBuffer sb = new StringBuffer();
                              String line;
                              while ((line = reader.readLine()) != null) {
                                    sb.append(line);
                              }
                              reader.close();
                              connection.disconnect();
                              return new JSONArray(sb.toString());
                        } else {
                              connection.disconnect();
                        }
                  } catch (Exception e) {
                        log.warn("error fetchToGetFriends, exception:" + e.getMessage()
                                    + ". tried " + i + " times");
                  }
            }
            return null;
      }

    /**
     *邀请好友 GET方式为(中文请先URLEncode):
     * http://fetion.xinghuo.org.ru/restlet/fetion/friend/13812345678/password/13912345678/Name/FriendName 返回数字-1或0或1,见下面说明
     *
     *@param friend
     *            被邀请好友的手机号
     *@param desc
     *            您的姓名(不能超过5个字),对方收到邀请短信时,会显示这个名字,以便让对方知道您是谁
     *@param nickname
     *            对方的姓名(不能超过10个字),如果对方同意的话,这个名字会作为您的好友名称显示
     *
     *@return -1错误或者对方手机号不支持(如全球通用户), 0对方已经是您的好友 1成功发送邀请短信,等待对方回复是否同意
     * 注意:相同手机号调用间隔要超过30秒,否则不成功(responseCode:406)
     */
    public static int fetchToAddFriend(String mobile, String password,
            String friend, String desc, String nickname) {
        String uuid = UUID.randomUUID().toString();
        for (int i = 0; i < TRY_TIMES; i++) {
            int responseCode = 0;
            try {
                URL postUrl = new URL(BASE_URL + "/restlet/fetion/friend");
                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=" + friend
                        + "&desc=" + URLEncoder.encode(desc, "utf-8")
                        + "&nickname=" + URLEncoder.encode(nickname, "utf-8");
                out.writeBytes(content);

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

                responseCode = connection.getResponseCode();
                if (responseCode == 202) {
                    BufferedReader reader = new BufferedReader(
                            new InputStreamReader(connection.getInputStream(), "UTF-8")); // 读取结果
                    StringBuffer sb = new StringBuffer();
                    String line;
                    while ((line = reader.readLine()) != null) {
                        sb.append(line);
                    }
                    reader.close();
                    connection.disconnect();
                    JSONObject jo = new JSONObject(sb.toString());
                    return jo.getInt("action");
                } else {
                    connection.disconnect();
                    return -1;
                }
            } catch (Exception e) {
                log.warn("error fetchToAddFriend, exception:" + e.getMessage()
                        + ". tried " + i + " times");
            }
        }
        return -1;
    }

    /**
     *发送定时短信 GET方式为(注意中文请先URLEncode,时间是太平洋时间和北京时间时差8小时,GET方式不支持群发,如要群发用下面POST方式):
     * http://fetion.xinghuo.org.ru/restlet/fetion/schedule/13812345678/password/13912345678/message/2009-08-08%2012:18 成功返回sid号码,否则返回空白(空格)
     *
     *POST方式如下
     *
     *@param message
     *            短信内容,字数不能超过180字
     *@param date
     *            发送日期格式为yyyy-MM-dd HH:mm,注意日期为时区为0的标准时间,北京时间的时区是8,所以要减去8小时;
     *            如计划2009-08-08 20:18分发送,应该填写2009-08-08 12:18;
     *            中国移动还规定日期要超出现在时间20分钟但不能超过1年。
     *@param friends
     *            接受短信的好友们,其中的数组可以是程序取到的好友的uri(最好不要使用手机号而使用uri,移动已不支持手机号发送,不容易发送成功),注意好友数不能超过30个,如果有需要,请用程序分开来多次调用
     * 注意:相同手机号,相同好友的请求的调用间隔要超过30秒,否则不成功(responseCode:406),但接受好友中包含你自己的手机号的请求不受30秒的限制!
     *
     *@return 一个sid号码,记下来如果后续要撤销短信发送,需要用到这个号码
     */
    public static String fetchToSendScheduleMsg(String mobile, String password,
            String[] friends, String message, String date) {
        String uuid = UUID.randomUUID().toString();
        for (int i = 0; i < TRY_TIMES; i++) {
            try {
                URL postUrl = new URL(BASE_URL + "/restlet/fetion/schedule");
                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)
                        + "&schedule=" + date.replace(" ", "%20") + "&message="
                        + URLEncoder.encode(message, "utf-8");
                out.writeBytes(content);

                out.flush();
                out.close();
                int responseCode = connection.getResponseCode();
                if (responseCode == 202) {
                    BufferedReader reader = new BufferedReader(
                            new InputStreamReader(connection.getInputStream(), "UTF-8")); // 读取结果
                    StringBuffer sb = new StringBuffer();
                    String line;
                    while ((line = reader.readLine()) != null) {
                        sb.append(line);
                    }
                    reader.close();
                    connection.disconnect();
                    JSONObject jo = new JSONObject(sb.toString());
                    return jo.getString("sid");
                } else {
                    connection.disconnect();
                    return null;
                }
            } catch (Exception e) {
                log.warn("error fetchToSaveSchedule, exception:"
                        + e.getMessage() + ". tried " + i + " times");
            }
        }
        return null;
    }

    /**
     *删除定时短信 GET方式为:
     * http://fetion.xinghuo.org.ru/restlet/fetion/scheduleDelete/13812345678/password/aglmZXRpb25saWJyGgsSB0FjY291bnQYAQwLEgdNZXNzYWdlGCQM
     * aglmZXRpb25saWJyGgsSB0FjY291bnQYAQwLEgdNZXNzYWdlGCQM是你发送定时短信返回的sid号码,
     * GET方式只支持一次删除一个定时短信,如果要删除多个,请用下面的POST方式,成功返回OK,否则返回Schedule Not Deleted
     * 注意:相同手机号调用间隔要超过30秒,否则不成功(responseCode:406)
     *
     *@param sid
     *            发送定时短信时返回的那些sid号码(不能超过10个sid),多个用数组的形式,程序会转换成JSON提交
     *
     */
    public static boolean fetchToDeleteScheduleMsg(String mobile,
            String password, String[] sids) {
        String uuid = UUID.randomUUID().toString();
        for (int i = 0; i < TRY_TIMES; i++) {
            try {
                URL postUrl = new URL(BASE_URL + "/restlet/fetion/scheduleDelete");
                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 + "&sids="
                        + convertArrayToJSONString(sids);
                out.writeBytes(content);

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

                int responseCode = connection.getResponseCode();
                connection.disconnect();
                if (responseCode == 202)
                    return true;
                else
                    return false;
            } catch (Exception e) {
                log.warn("error fetchToDeleteSchedule, exception:"
                        + e.getMessage() + ". tried " + i + " times");
            }
        }
        return false;
    }

    /**
     *测试能否登录成功 GET方式为:
     * http://fetion.xinghuo.org.ru/restlet/fetion/loginTest/13812345678/password
     * 成功返回OK,不成功返回Login Failed
     *
     * 注意:相同手机号调用间隔要超过30秒,否则不成功(responseCode:406)
     */
    public static boolean fetchToLoginTest(String mobile, String password) {
        String uuid = UUID.randomUUID().toString();
        for (int i = 0; i < TRY_TIMES; i++) {
            try {
                URL postUrl = new URL(BASE_URL + "/restlet/fetion/loginTest");
                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;
                out.writeBytes(content);

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

                int responseCode = connection.getResponseCode();
                connection.disconnect();
                if (responseCode == 202)
                    return true;
                else
                    return false;
            } catch (Exception e) {
                log.warn("error fetchToLoginTest, exception:" + e.getMessage()
                        + ". tried " + i + " times");
            }
        }
        return false;
    }

    /**
       *取得好友回复消息 (仅供POST使用,暂不提供GET方式)(本功能刚上线,仅测试)
       * 注意:相同手机号调用间隔要超过55秒(一般60秒调用一次),否则不成功(responseCode:406)
       *
       * 返回JSONArray,其中date是接收的时间(格式为yyyy-MM-dd HH:mm,太平洋时间),uri是好友的uri,您可以通过获取好友列表来查看这个uri对应到哪个好友
       * 注意,要使用接受回复功能,必须要让飞信在我的服务器上保持登录状态(一般8分左右也会自动注销),所以我给每个API的POST方式增加一个新的参数keepLogin=true
       * 所以如果启用接受消息API功能,除了每分钟调用这个API以外,期间如果调用其他API,在每个API后面POST的时候要多一个&keepLogin=true,
       * 如果不加或者keepLogin=false,该次调用完API后程序会将飞信注销。
       *
       */
      public static JSONArray fetchToCheckMessages(String mobile, String password) {
            String uuid = UUID.randomUUID().toString();
            for (int i = 0; i < TRY_TIMES; i++) {
                  try {
                        URL postUrl = new URL(BASE_URL + "/restlet/fetion/checkMessage");
                        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;+ "&keepLogin=true"
                        out.writeBytes(content);

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

                        int responseCode = connection.getResponseCode();
                        if (responseCode == 202) {
                              BufferedReader reader = new BufferedReader(
                                          new InputStreamReader(connection.getInputStream(), "UTF-8")); // 读取结果
                              StringBuffer sb = new StringBuffer();
                              String line;
                              while ((line = reader.readLine()) != null) {
                                    sb.append(line);
                              }
                              reader.close();
                              connection.disconnect();
                              return new JSONArray(sb.toString());
                        } else {
                              connection.disconnect();
                        }
                  } catch (Exception e) {
                        log.warn("error fetchToCheckMessages, exception:" + e.getMessage()
                                    + ". tried " + i + " times");
                  }
            }
            return null;
      }

    //把数组转化成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

    在本篇文章中,我们将深入探讨飞信API的结构、功能以及如何进行调用。 首先,我们要理解飞信API的基本结构。飞信API通常由一系列的函数、类和方法组成,这些组件共同构成了一个接口,使得开发者可以通过它们来实现...

    PB调用http、api,PB解析json.zip

    PB调用http、api,PB解析json; PB调用http、api,PB解析json; PB调用http、api,PB解析json; PB调用http、api,PB解析json; PB调用http、api,PB解析json; PB调用http、api,PB解析json; PB调用http、api,PB解析...

    webapi调用的方法

    WebAPI调用是软件开发中常见的一种技术,主要用于应用程序与服务器端进行数据交互。在这个场景中,我们讨论的是一个名为"opensinaapi1.0beta3"的压缩包,它包含了一个用于测试新浪API的代码库。新浪API是新浪提供的...

    豆包 API 调用示例代码详解-Python版

    豆包 API 调用示例代码详解-Python版 在本文中,我们将详细介绍如何使用 Python 调用豆包 API,并提供相关的事前准备和代码执行步骤。 一、事前准备 密钥申请: 要使用豆包 API,首先需要申请一个授权密钥。在上述...

    易语言不声明api函数直接动态调用api源码

    在易语言编程中,API(应用程序接口)是操作系统或库提供的功能调用接口,用于扩展易语言的功能。通常,易语言程序在使用API时需要先声明API函数,然后才能调用。然而,有一种方法可以不声明API函数,而是直接进行...

    VB调用API函数方法详解

    在VB(Visual Basic)编程中,调用API(Application Programming Interface)函数是一种常见的技术,用于访问操作系统提供的功能,这些功能可能未直接包含在VB的标准库中。API函数提供了与操作系统进行交互的能力,...

    从VFP中用Inet API调用HTTP

    ### 从VFP中用Inet API调用HTTP #### 概述 在Visual FoxPro (VFP) 开发环境中,使用Internet API (Inet API) 来发起HTTP请求是一种常见的技术手段。这种方式允许开发者利用VFP应用程序与互联网进行交互,从而实现...

    WP7飞信API接口DLL

    WP7飞信API接口DLL是由一位技术达人精心编写的库文件,它为Windows Phone平台的开发者提供了一种便捷的方式,通过调用预设的API函数来实现飞信的各种操作。这个接口使得开发者无需深入了解飞信内部的工作机制,只需...

    C#winform调用webapi.rar

    综上所述,C# WinForm调用WebAPI涉及了客户端应用开发、HTTP通信、JSON数据处理以及服务器端API设计等多个技术环节。理解并熟练掌握这些知识点,能够帮助开发者构建出高效且可靠的跨平台应用程序。

    监视进程调用了哪些API的工具 显示函数调用顺序和次数,返回值

    API监视器会在每次API调用时记录相关信息,包括调用的API名称、参数、调用顺序、调用次数以及返回值。 例如,"api-monitor-v2r13-setup-x64.exe"可能是一个64位版本的API监视工具,它包含了安装程序,用于在用户的...

    C# WEBAPI 及winform调用

    webapi 项目平台,包含接口生成,及接口调用方法,项目代码清晰明了,非常值得初学者参考借鉴,更具体的开发步骤可以登入我的博客查看:http://www.cnblogs.com/gudaozi/p/8384734.html

    API是什么,怎么调用API,API调用详解

    API具有明确的接口定义,它可以是简单的单个函数,也可以是一系列复杂的类、方法、数据类型等集合。API可以是私有的,仅限于特定的应用程序使用;也可以是公开的,供外部开发者调用。 #### API的分类 根据应用场景...

    VB.NET 调用Windows API 使用方法

    ### VB.NET 调用 Windows API 使用方法 #### 一、引言 Windows API(Application Programming Interface)调用在过去曾是Visual Basic编程中非常重要的一部分。然而,在Visual Basic .NET(以下简称VB.NET)环境下...

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

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

    监视exe调用了哪些api函数的vc++源码

    标题 "监视exe调用了哪些api函数的vc++源码" 提到的是一个关于使用VC++编程语言来实现监控可执行文件(exe)调用的API函数的功能。这通常涉及到系统级别的编程,特别是Windows API钩子技术,用于跟踪系统调用。 在...

    C#调用一言API并提取关键字 调用2.zip

    在本文中,我们将深入探讨如何使用C#编程语言调用一言API,以及如何从中提取关键字,筛选句子和作者信息。一言API是由海词网提供的一个服务,它提供了丰富的语料库,允许开发者获取高质量的随机句子、成语、诗词等。...

    PB调用http api接口 PB解析json

    PB调用HTTP API接口是PowerBuilder(PB)应用程序与远程服务交互的一种常见方式,这使得PB应用能够利用Web服务或RESTful API获取和传递数据。在这个过程中,PB不仅需要发送HTTP请求,还需要处理响应,尤其是当响应...

    VBS调用API必须使用的dll_dynwrap

    VBS是一种脚本语言,通常用于自动化任务和简单的用户界面,但它本身并不直接支持API调用。通过使用像dll_dynwrap这样的第三方库,VBS可以扩展其功能,访问更底层的系统功能。 描述提到,VBS可以通过使用dll_dynwrap...

Global site tag (gtag.js) - Google Analytics