微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用带有 curl 库的 http 协议在云中发送数据

如何解决使用带有 curl 库的 http 协议在云中发送数据

我是 curl 库的新手。我有一个网站,我正在向该网站发送数据,但它并没有到达那里。以下是我用于在网站上发送数据的代码。 '''

struct msgbuff v;
int id1,id2;
char cmd[100];
char log[250];

 int id;
id=msgget(3,IPC_CREAT|0777);
if(id==-1)
{
    fprintf(stderr,"Error in msgget %d - %s\n",errno,strerror(errno));
    sprintf(cmd,"logger  -s %s >> syserr.log 2>&1",strerror(errno));
    system(cmd);
    return -1;

}
struct logbuff msglog;

id2=msgget(5,IPC_CREAT|0777);
if(id2==-1)
{
    fprintf(stderr,strerror(errno));
    system(cmd);
    return -1;

}


struct stat file_stat;
unsigned  char *data;
FILE *fp;
if (stat("/home/abhishek/Desktop/data_small.csv",&file_stat) == -1) {

    perror("stat");
    exit(0);
}
printf("size=%d\n",file_stat.st_size );
data=(unsigned char *)malloc(file_stat.st_size+10);
fp=fopen("/home/abhishek/Desktop/data_small.csv","r");
if(fp==NULL)
{
  perror("fopen");
  exit(0);
}//strcat(data,"file:");
//fread(data+strlen("file="),1,file_stat.st_size,fp);
//puts(data);

printf("mqID=%d in %d\n",id,getpid());


 char current_Date[40];
 char current_time[20];
 time_t t;
 struct tm *tmptr;

    t=time(0);
    tmptr=localtime(&t);
    strftime(current_Date,40,"%F",tmptr);
    strftime(current_time,20,"%T",tmptr);
    strcat(current_Date," ");

    strcat(current_Date,current_time);
    sprintf(cmd,"datetime: %s",current_Date);

CURL *curl;
CURLcode res;
//char buffer[2000];

curl_mime *form = NULL;
curl_mimepart *field = NULL;


  struct curl_slist *headers = NULL,*headers_sensor = NULL;
  curl_global_init(CURL_GLOBAL_ALL);
  curl = curl_easy_init();
  form = curl_mime_init(curl);

/* Fill in the file upload field */
field = curl_mime_addpart(form);
curl_mime_name(field,"file");
curl_mime_filedata(field,"data_small.csv");



/* Fill in the filename field */
 field = curl_mime_addpart(form);
 curl_mime_name(field,"filename");
 curl_mime_data(field,"data_small.csv",CURL_ZERO_TERMINATED);


headers = curl_slist_append(headers,"macaddress: a8:1b:6a:fa:97:f5");
headers = curl_slist_append(headers,"snapshotno: 100");
headers = curl_slist_append(headers,"hthvcid: 1");
headers = curl_slist_append(headers,"filename: data_small.csv");
headers = curl_slist_append(headers,cmd);
headers = curl_slist_append(headers,"token:ELEC/CN");




 curl_easy_setopt(curl,CURLOPT_URL,"https://pqr.deltaww.com/csvapi");
 curl_easy_setopt(curl,CURLOPT_HTTPHEADER,headers);
 curl_easy_setopt(curl,CURLOPT_MIMEPOST,form);


 curl_easy_setopt(curl,CURLOPT_VERBOSE,1L);
 curl_easy_setopt(curl,CURLOPT_HTTP_VERSION,CURL_HTTP_VERSION_2_0);




    if(curl) {
        /* Create the form */


  //  curl_easy_setopt(curl,CURLOPT_POSTFIELDS,data);

    /* if we don't provide POSTFIELDSIZE,libcurl will strlen() by
       itself */
   // curl_easy_setopt(curl,CURLOPT_POSTFIELDSIZE,(long)strlen(data));

    /* Perform the request,res will get the return code */
         printf("\n\nabhishek\n\n");
    res = curl_easy_perform(curl);
    printf("\n\nabhishek\n\n");

    /* Check for errors */
    if(res != CURLE_OK)
        {
            fprintf(stderr,"curl_easy_perform() Failed: %s\n",curl_easy_strerror(res));

        }
        else
        {
            printf("%s%s\n","connection ok data sent",readbuff);
        //  printf("%s\n",strstr(readbuff,"true") );

        }

  }



curl_easy_cleanup(curl);

curl_mime_free(form);

curl_slist_free_all(headers);

我得到的输出是。

** 大小=1030 11380 中的 mqID=0 阿布舍克

  • 正在尝试 52.163.200.50:443...
  • TCP_NODELAY 设置
  • 连接到 pqr.deltaww.com (52.163.200.50) 端口 443 (#0)
  • 在 /etc/ssl/certs 中找到 391 个证书
  • ALPN,提供 h2
  • ALPN,提供 http/1.1
  • 使用 TLS1.2 / ECDHE_RSA_AES_256_GCM_SHA384 的 SSL 连接
  • 服务器证书验证正常
  • 跳过服务器证书状态验证
  • 通用名称:*.deltaww.com(匹配)
  • 服务器证书到期日期正常
  • 服务器证书激活日期确定
  • 证书公钥:RSA
  • 证书版本:#3
  • 主题:C=台湾,邮政编码=11491,L=台北市,街道=编号。 186,Ruiguang Rd.,O=Delta Electronics inc.,OU=IT,CN=*.deltaww.com
  • 开始日期:格林威治标准时间 2020 年 8 月 3 日星期一 00:00:00
  • 失效日期:2022 年 10 月 22 日星期六 23:59:59 GMT
  • 发行人:C=GB,ST=Greater Manchester,L=Salford,O=Sectigo Limited,CN=Sectigo RSA 组织验证安全服务器 CA
  • ALPN,服务器不同意协议

POST /csvapi HTTP/1.1 主持人:pqr.deltaww.com 接受:/ 传输编码:分块 文件名:data_small.csv 内容类型:多部分/表单数据;边界=------------------------daf89a8ccd928302 预期:100-继续

  • 将捆绑包标记不支持多用途
  • 读取函数返回有趣的值
  • 关闭连接 0 阿布舍克 curl_easy_perform() 失败:无法从文件/应用程序打开/读取本地数据。

** 在输出中,我无法理解最后一行“curl_easy_perform() Failed: Failed to open/read local data from file/application”。请帮助我这一行的含义是什么,或者我需要改变什么才能使 curl_easy_perform() 成功。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。