• C++如何調用手機短信驗證碼

    0
    PHP .NET C/C++ Go 3296 次瀏覽

    創藍253短信平臺案例---C語言調用接口

    [C++] 基于創藍253云通訊paas平臺c/c++短信接 demo 

     

    #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 <unistd.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 = "123.59.105.84";
    char *send_sms_uri = "/msg/send";
    char *query_balance_uri = "/msg/balance";



    /**
    * * 發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.0\r\n"
                    "Host: sms.253.com\r\n"
                    "Content-type: application/x-www-form-urlencoded\r\n"
                    "Content-length: %zu\r\n\r\n"
                    "%s", page, strlen(poststr), 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 *un, char *pw)
    {
        char params[MAXPARAM + 1];
        char *cp = params;

            sprintf(cp,"un=%s&pw=%s", un, pw);

        return http_post(query_balance_uri, cp);
    }

    /**
    * * 發送短信
    * */
    ssize_t send_sms(char *un, char *pw, char *phone, char *msg)
    {
        char params[MAXPARAM + 1];
        char *cp = params;

            sprintf(cp,"un=%s&pw=%s&phone=%s&msg=%s&rd=1", un, pw, phone, 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 *un = "賬號";
            char *pw = "密碼";
            char *phone = "手機號";
            //必須帶簽名
            char *msg = "【253云通訊】您的驗證碼是123400";

        //get_balance(un, pw);
        send_sms(un, pw, phone, msg);
        close(sockfd);
        exit(0);
    }
     

     

    相似問題

    相關經驗

    相關資訊

    相關文檔

  • sesese色