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

C++调用创蓝253国际短信-API-demo

    博客分类:
  • wu
阅读更多

#include <arpa/inet.h>
#include <assert.h>
#include <errno.h>
#include <netinet/in.h>
#include <signal.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <sys/wait.h>
#include <netdb.h>
//#include <accountistd.h>

#define SA struct sockaddr
#define MAXLINE 4096
#define MAXSUB  2000
#define MAXPARAM 2048

#define LISTENQ         1024


//线上线下接口宏开关

#define ONLINE 


extern int h_errno;

int sockfd;



char *hostname = "118.178.16.150";
char *send_sms_uri = "/send/json";
char *query_balance_uri = "/balance/json";



/**
* * 发http post请求
* */
ssize_t http_post(char *page, char *poststr)
{
    char sendline[MAXLINE + 1], recvline[MAXLINE + 1];
    ssize_t n;
snprintf(sendline, MAXSUB,
"POST %s HTTP/1.1\r\n"
"Host: intapi.253.com\r\n"
"Content-type: application/json\r\n"
"Content-length: %zu\r\n\r\n"
"%s", page, strlen(poststr), poststr);
//, page, poststr);
    write(sockfd, sendline, strlen(sendline));
printf("\n%s", sendline);
printf("\n--------------------------\n");
    while ((n = read(sockfd, recvline, MAXLINE)) > 0) {
        recvline[n] = '\0';
        printf("%s\n", recvline);
    }
    return n;
}

/**
* * 查账户余额
* */
ssize_t get_balance(char *account, char *password)
{
    char params[MAXPARAM + 1];
    char *cp = params;

sprintf(cp,"{\"account\":\"%s\",\"password\":\"%s\"}", account, password);

    return http_post(query_balance_uri, cp);
}

/**
* * 发送短信
* */
ssize_t send_sms(char *account, char *password, char *mobile, char *msg)
{
    char params[MAXPARAM + 1];
    char *cp = params;

sprintf(cp,"{\"account\":\"%s\",\"password\":\"%s\",\"mobile\":\"%s\",\"msg\":\"%s\"}", account, password, mobile, msg);   

    return http_post(send_sms_uri, cp);
}

int main(void)
{
    struct sockaddr_in servaddr;
    char str[50];

    //建立socket连接
    sockfd = socket(AF_INET, SOCK_STREAM, 0);
    bzero(&servaddr, sizeof(servaddr));
    servaddr.sin_addr.s_addr = inet_addr(hostname);
    servaddr.sin_family = AF_INET;
    servaddr.sin_port = htons(80);
    inet_pton(AF_INET, str, &servaddr.sin_addr);
    connect(sockfd, (SA *) & servaddr, sizeof(servaddr));

char *account = "";
char *password = "a.123456987";
//手机号码,格式(区号+手机号码),例如:8615800000000,其中86为中国的区号
char *mobile = "8615800000000";
//必须带签名
char *msg = "【253云通讯】您的验证码是123400";

    //get_balance(account, password);
    send_sms(account, password, mobile, msg);
    close(sockfd);
    exit(0);
}






分享到:
评论

相关推荐

    上期所CTP-Api之C++交易Demo版

    上期所CTP-Api之C++交易Demo版,到SIMNOW申请模拟账号后可以实时进行期货的模拟交易,也可以使用从证券公司注册的账号进行交易。

    PI开发pi开发,使用c++语言,调用pi api

    - 文中提到了C++ Builder这一开发环境,通过调用PI-API,开发者可以编写程序来实现对PI数据库的访问。文件中指出,这种基于PI-API的访问方法已经被应用到电力负荷预测系统中,实现了对电力负荷数据的有效访问。 4. ...

    上期所CTP-Api之C++交易Demo版.zip

    CTP接口 c++版本的示例。 主要实现了如下功能,交易服务器的登录, 发送报单, 报单回复处理, 仓位查询等功能。

    C++调用python demo

    这篇"**C++调用python demo**"提供了一个实例,演示了如何使用C++来调用Python脚本,帮助开发者理解这两种语言之间的接口操作。下面将详细阐述相关知识点。 首先,C++与Python的交互主要依赖于`Python C API`...

    C++调用百度地图API

    通过C++代码调用百度地图API,一个简单实用的百度地图操作实例,希望能给大家带来帮助。

    Module for using Node-API from C++.zip

    Node-API (N-API) 是由 Node.js 官方提供的一个 API,它允许开发者用 C/C++ 编写可跨 Node.js 版本的模块。这个压缩包“Module for using Node-API from C++.zip”显然是一个关于如何使用 C++ 与 Node-API 进行交互...

    上期所CTP-Api之C++行情Demo版(可保存数据到本地)

    上期所CTP-Api之C++行情Demo版,到SIMNOW申请模拟账号后,可以实时接收所有期货数据。

    阿里云发送短信C++源码、实测通过

    本示例主要关注如何使用C++编程语言在Windows环境下通过VS2019集成开发环境与阿里云API接口进行集成,实现短信的发送功能。 首先,你需要在阿里云官网注册账号并创建一个服务,获取到相应的Access Key ID和Access ...

    C++网络编程实例------网络编程DEMO,

    本实例——"C++网络编程实例——网络编程DEMO",旨在通过Visual Studio 2005(VC++)环境,提供一个实践性的教程,帮助开发者掌握C++中的网络编程基础。 首先,C++网络编程主要依赖于套接字(Sockets)API,这是...

    c# 调用c++ dll 调用opencv-wechat微信识别二维码。

    本案例中,我们将探讨如何使用C#调用C++编写的DLL,该DLL内部集成了OpenCV库来处理微信二维码的识别。OpenCV是一个强大的计算机视觉库,而微信二维码识别则涉及移动支付和社交应用中的关键功能。 首先,我们需要...

    C++调用C#DLL的DEMO

    字符串转换是跨语言通信中常见的操作,C#可能提供了丰富的字符串处理API,而在C++中需要进行适当的转换以匹配C#的接口。 在实际应用中,为了更好地管理和维护,我们可能会使用C++/CLI这样的混合编程技术,它允许...

    C#调用C++ Api或接口转换工具

    本文将详细介绍如何在C#中调用C++ API,以及如何使用接口转换工具来简化这一过程。 首先,C#调用C++ API主要通过以下两种方式: 1. **P/Invoke(Platform Invoke)**:这是.NET Framework提供的一种机制,允许C#...

    llama.cpp C++ api开发入门demo

    llama.cpp C++ api开发入门demo。加载llama模型,生成回答语句

    希望使用C、C++如何调用windows api来操作office组件,抽取数据和转换,不需要图形界面,不使用mfc下的类库

    使用 C、C++ 调用 Windows API 操作 Office 组件 在 Windows 平台上,使用 C 或 C++ 调用 Windows API 来操作 Office 组件是一种常见的需求。由于 Office 组件提供了 COM 接口,因此可以使用 C 或 C++ 语言来调用...

    c++调用javascript代码

    2. **Node.js的N-API**:虽然Node.js本身是用JavaScript编写的,但其提供了N-API,这是一个稳定的C/C++接口,用于创建可被JavaScript调用的原生模块。在C++中,可以使用N-API编写模块,然后在JavaScript环境中调用...

    mongodb-c++-api chm

    api文档, 当手册来用的.chm格式 个人感觉还是挺不错的文档.

    大华相机Demo-C++.rar

    本文将围绕"大华相机Demo-C++.rar"这一压缩包,深入解析其中包含的C++案例,帮助读者理解和掌握如何使用大华工业相机进行程序开发。 首先,我们要明确“大华工业相机”是指大华公司推出的专用于工业自动化、检测、...

    SHA-256算法的C++实现及demo

    `testsha256`这个文件名可能是指的示例程序或测试用例,它可能包含一个简单的C++程序,用于演示如何调用SHA-256函数计算一个字符串或文件的哈希值。这样的程序通常包括读取输入、调用哈希函数、将结果转换为十六进制...

Global site tag (gtag.js) - Google Analytics