CURL发送HTTP请求获得Json数据串保存在本地(linux 下 C++ 编程)

2023-05-16

某AI比赛中需要用到curl发送http请求,然后返回一个json字符串,看一下别人怎么写的。

#include<iostream>
#include<string>
#include<curl/curl.h>
#include<json/json.h>
#include<fstream>
#define filemax 2048
#define CDN_num 1024
using namespace std;
size_t get_data(void*prt,size_t size, size_t nmemb, FILE * stream)
{
		size_t written = fwrite(prt,size,nmemb,stream);
			return written;
}
 
 
struct CDN_Info
{
	string name;
	string IP;
	string APP;
	string StreamName;
	int Link_num;
};
 
int main()
{
	CDN_Info CDN_Mess[CDN_num];
	int i=0;
	FILE* fp;
        const char* api_url="192.168.1.107/getclient";
	CURLcode res;
	CURL* curl=curl_easy_init();
	char outfile[filemax]="Temp.json";
	fp = fopen(outfile,"wb");
	curl_easy_setopt(curl,CURLOPT_URL,api_url);
	curl_easy_setopt(curl,CURLOPT_WRITEFUNCTION,get_data);
	curl_easy_setopt(curl,CURLOPT_WRITEDATA,fp);
	res=curl_easy_perform(curl);
	if (res!=CURLE_OK)
	{
		perror("Curl error");
		return 1;
	}
	curl_easy_cleanup(curl);
	fclose(fp);
	
	Json::Reader reader;
	Json::Value root;
	
	ifstream is;
	is.open("Temp.json",ios::out);
    if (!reader.parse(is,root))
	{
		return 1;
	}
	for (Json::Value::iterator idx = root.begin();idx != root.end();idx++)
	{
		CDN_Mess[i].name=root[i]["name"].asString();
		CDN_Mess[i].IP=root[i]["url"].asString();
		CDN_Mess[i].APP=root[i]["app"].asString();
		CDN_Mess[i].StreamName=root[i]["stream"].asString();
    	        CDN_Mess[i].Link_num=root[i]["client"].asInt();
		i++;
	}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

CURL发送HTTP请求获得Json数据串保存在本地(linux 下 C++ 编程) 的相关文章

随机推荐

  • Linux驱动开发基础_在设备树中指定中断以及在代码中获得中断

    目录 1 设备树里中断节点的语法 1 1 设备树里的中断控制器 1 2 设备树里使用中断 2 设备树里中断节点的示例 3 在代码中获得中断 3 1 对于 platform device 3 2 对于 I2C 设备 SPI 设备 3 3 调用
  • Linux驱动开发基础__休眠与唤醒

    目录 1 适用场景 2 内核函数 2 1 休眠函数 2 2 唤醒函数 3 驱动框架 4 编程 4 1 gpio key drv c 4 2 button test c 4 3 Makefile 1 适用场景 在前面引入中断时 xff0c 我
  • Hive ddl语法使用详解

    一 前言 使用过关系型数据库mysql的同学对mysql的ddl语法应该不陌生 xff0c 使用ddl语言来创建数据库中的表 索引 视图 存储过程 触发器等 xff0c hive中也提供了类似ddl的语法 本篇将详细讲述hive中ddl的使
  • Linux驱动开发基础__POLL机制

    目录 1 适用场景 2 POLL机制的内核代码详解 2 1 sys poll 函数 2 2 do sys poll 函数 2 3 do poll函数 3 poll机制使用流程 4 驱动编程 5 应用编程 6 代码 6 1 gpio key
  • Linux驱动开发基础__异步通知

    目录 1 适用场景 2 使用流程 3 驱动编程 4 应用编程 5 代码 5 1 gpio key drv c 5 2 button test c 5 3 Makefile 6 异步通知机制内核代码详解 1 适用场景 在前面引入中断时 xff
  • Linux驱动开发基础__阻塞与非阻塞

    目录 1 引入 2 应用编程 3 驱动编程 4 代码 4 1 gpio key drv c 4 2 button test c 1 引入 所谓阻塞 xff0c 就是等待某件事情发生 比如调用 read 读取按键时 xff0c 如果没有按键数
  • Linux驱动开发基础__定时器

    目录 1 内核函数 2 定时器时间单位 3 使用定时器处理按键抖动 4 编程 4 1 gpio key drv c 4 2 button test c 4 3 Makefile 1 内核函数 所谓定时器 xff0c 就是闹钟 xff0c 时
  • Linux驱动开发基础__中断下半部tasklet

    目录 1 引入 2 内核函数 2 1 定义tasklet 2 2 使能 禁止 tasklet 2 3 调度tasklet 2 4 kill tasklet 3 tasklet 使用方法 4 tasklet 内部机制 5 代码 5 1 gpi
  • Linux驱动开发基础__工作队列

    目录 1 引入 2 内核函数 2 1 定义work 2 2 使用 work xff1a schedule work 2 3 其他函数 3 代码 3 1 gpio key drv c 3 2 button test c 4 内部机制 4 1
  • Linux驱动开发基础__中断的线程化处理

    目录 1 引入 2 内核机制 2 1 调用 request threaded irq 后内核的数据结构 2 2 request threaded irq 2 3 中断的执行过程 1 引入 复杂 耗时的事情 xff0c 尽量使用内核线程来处理
  • Linux驱动开发基础__mmap

    目录 1 引入 2 内存映射现象与数据结构 3 ARM 架构内存映射简介 3 1 一级页表映射过程 3 2 二级页表映射过程 4 怎么给 APP 新建一块内存映射 4 1 mmap 调用过程 编辑4 2 cache 和 buffer 4 3
  • 利用python批量下载百度图片

    某项目中需要训练高速火灾算法 但是手头没有数据集 因此需要利用python从网上下载图片 代码如下 coding utf8 import requests import json from urllib import parse impor
  • python将标注平台的数据格式转换成yolov5的txt格式

    标注平台得到的数据格式如下 annotation object bndbox xmax 1917 xmin 9 ymax 1037 ymin 474 groupid name 轻度雾气 size height 1080 width 1920
  • linux vnc常见命令

    linux vnc virtual network computing 1 新建一个vncserver xff1a 直接输入vncserver即可 xff0c 系统将从1开始计算桌面数 xff0c 当然也可以指定桌面的编号 xff0c 如
  • uboot,内核,根文件系统的启动过程

    复习了下uboot xff0c 内核 xff0c 根文件系统 xff0c 简单概括下三者的主要内容 1 uboot uboot的目的 xff1a 启动内核 uboot的功能可以分为两个阶段任务 1 2 1 uboot第一阶段 uboot第一
  • S3C2440开发环境搭建以及过程中遇到的问题

    拿出了之前的S3C2440开发板 xff0c 然后把移植uboot 移植内核 制作根文件系统 设备树编写驱动等几项再做一遍 xff0c 这篇文章先记录下环境搭建过程 xff0c 以及先把现成的uboot 内核 根文件系统下载进去 xff0c
  • S3C2440移植Linux4.19.275内核以及过程中遇到的问题

    目录 1 问题一 xff1a 内核移植时MTD分区问题 2 问题二 xff1a uboot的MTDPARTS DEFAULT定义的MTD分区 xff0c bootargs中的文件系统分区 xff0c 内核的mtd partition smd
  • 深度学习算法训练和部署流程介绍--让初学者一篇文章理解算法训练和部署流程

    目录 1 什么是深度学习算法 2 算法训练 2 1 训练的原理 2 2 名词解释 3 算法C 43 43 部署 3 1 嵌入式终端板子部署 3 3 1 tpu npu推理 3 3 2 cpu推理 3 2 服务器部署 3 2 1 智能推理 3
  • 使用busybox构建根文件系统

    目录 1 下载busybox 2 修改Makefile 3 配置busybox 4 编译安装 4 1 usr include unistd h 203 error conflicting types for 39 gid t 39 4 2
  • CURL发送HTTP请求获得Json数据串保存在本地(linux 下 C++ 编程)

    某AI比赛中需要用到curl发送http请求 xff0c 然后返回一个json字符串 xff0c 看一下别人怎么写的 include lt iostream gt include lt string gt include lt curl c