C语言实现简单的微信推消息命令,调用Server酱

首先请前往Server酱的页面按要求注册。
然后编译以下源码运行即可(注意修改POSTURLSCKEY),源码的post请求部分参考了这篇文章
另外,编译时请使用

gcc source.c -l curl -o output

否则会报错。
以下是源码部分。

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <curl/curl.h>

#define POSTURL "https://sc.ftqq.com/[SCKEY].send"
#define POSTFIELDS s_post
#define FILENAME "ftqq_curl.log"

size_t write_data(void *buffer, size_t size, size_t nmemb, void *userp){
  FILE *fptr = (FILE*)userp;
  fwrite(buffer, size, nmemb, fptr);
  fclose(fptr);
}

int main(int argc, char* argv[]){
  char s_desp[65537];
  char s_post[256 + 65536 + 11 + 1];

  if(argc != 3){
    printf("\nInvalid Arguments!\nusage:<command dir> <text> <desp or desp dir>");
    return 1;
  }
  FILE *fp = NULL;
  if((fp = fopen(argv[2],"r")) == NULL)strcpy(s_desp, argv[2]);
  else fread(s_desp, sizeof(s_desp) - 1, 1, fp);
  fclose(fp);
  if(strlen(argv[1]) <= 256)sprintf(s_post, "text=%s&desp=%s", argv[1], s_desp);
  else{
    printf("\nText is too long!\n");
    return 2;
  }

  CURL *curl;
  CURLcode res;
  FILE *fptr;
  struct curl_slist *http_header = NULL;
  if ((fptr = fopen(FILENAME, "w")) == NULL){
    fprintf(stderr, "fopen file error: %s\n", FILENAME);
    exit(1);
  }
  curl = curl_easy_init();
  curl_easy_setopt(curl, CURLOPT_URL, POSTURL);   
  curl_easy_setopt(curl, CURLOPT_POSTFIELDS, POSTFIELDS);   //设置post属性,使用&来将表单属性连接在一起
  curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_data);   //回调函数,可有可无
  curl_easy_setopt(curl, CURLOPT_WRITEDATA, fptr);           //回调函数写入数据指针
  curl_easy_setopt(curl, CURLOPT_POST, 1);                 //设置libcurl发送的协议
  curl_easy_setopt(curl, CURLOPT_VERBOSE, 0);              //设置详细模式
  curl_easy_setopt(curl, CURLOPT_HEADER, 1);               //设置http数据头
  curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1);       //设置返回的数据量
  //curl_easy_setopt(curl, CURLOPT_COOKIEFILE, "/Users/zhu/CProjects/curlposttest.cookie");   //设置cookie,不是必须
  res = curl_easy_perform(curl);
  curl_easy_cleanup(curl);
}
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值