加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

发送http请求的C++代码实现

发布时间:2020-12-16 07:47:42 所属栏目:百科 来源:网络整理
导读:今天PHP站长网 52php.cn把收集自互联网的代码分享给大家,仅供参考。 #include arpa/inet.h #include assert.h #include errno.h #include netinet/in.h #include signal.h #include stdlib.h #include stdio.h #include

以下代码由PHP站长网 52php.cn收集自互联网

现在PHP站长网小编把它分享给大家,仅供参考

    #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  
      
    extern int h_errno;  
      
    int sockfd;  
    char *hname = "yunpian.com";  
    char *send_sms_json = "/v1/sms/send.json";  
    char *get_user_json = "/v1/user/get.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.0rn"  
                 "Host: %srn"  
                 "Content-type: application/x-www-form-urlencodedrn"  
                 "Content-length: %zurnrn"  
                 "%s",page,hname,strlen(poststr),poststr);  
          
        write(sockfd,sendline,strlen(sendline));  
        while ((n = read(sockfd,recvline,MAXLINE)) > 0) {  
            recvline[n] = '';  
            printf("%s",recvline);  
        }  
        return n;  
    }  
      
    /** 
     * 查账户信息 
     */  
    ssize_t get_user(char *apikey)  
    {  
        char params[MAXPARAM + 1];  
        char *cp = params;  
        sprintf(cp,"apikey=%s",apikey);  
        return http_post(get_user_json,cp);  
    }  
      
    /** 
     * 使用通用接口发短信 
     */  
    ssize_t send_sms(char *apikey,char *mobile,char *text)  
    {  
        char params[MAXPARAM + 1];  
        char *cp = params;  
        sprintf(cp,"apikey=%s&mobile=%s&text=%s",apikey,mobile,text);  
        return http_post(send_sms_json,cp);  
    }  
      
    int main(void)  
    {  
        struct sockaddr_in servaddr;  
        char **pptr;  
        char str[50];  
        struct hostent *hptr;  
        if ((hptr = gethostbyname(hname)) == NULL) {  
            fprintf(stderr,"通过域名获取IP失败: %s: %s",hstrerror(h_errno));  
            exit(1);  
        }  
        printf("域名: %sn",hptr->h_name);  
        if (hptr->h_addrtype == AF_INET  
            && (pptr = hptr->h_addr_list) != NULL) {  
            printf("IP: %sn",inet_ntop(hptr->h_addrtype,*pptr,str,sizeof(str)));  
        } else {  
            fprintf(stderr,"Error call inet_ntop n");  
            exit(1);  
        }  
          
        //建立socket连接  
        sockfd = socket(AF_INET,SOCK_STREAM,0);  
        bzero(&servaddr,sizeof(servaddr));  
        servaddr.sin_family = AF_INET;  
        servaddr.sin_port = htons(80);  
        inet_pton(AF_INET,&servaddr.sin_addr);  
          
        connect(sockfd,(SA *) & servaddr,sizeof(servaddr));  
      
        //修改为您的apikey  
        char *apikey = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";  
        //修改为您要发送的手机号  
        char *mobile = "188xxxxxxxx";  
        //设置您要发送的内容  
        char *text = "您的验证码是1234";  
          
        /**************** 查账户信息调用示例 *****************/  
        get_user(apikey);  
          
        /**************** 使用通用接口发短信 *****************/  
        //send_sms(apikey,text);  
      
        close(sockfd);  
        exit(0);  
    }             

以上内容由PHP站长网【52php.cn】收集整理供大家参考研究

如果以上内容对您有帮助,欢迎收藏、点赞、推荐、分享。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读