ROS下使用CURL与服务器数据交换
来源:互联网 发布:大数据建设 编辑:程序博客网 时间:2024/06/05 18:31
这段时间在做linux下的信息收集并与服务器进行数据交换,经过两个多星期的学习终于初步解决了这个问题.
callback function
static size_t write_callback(void *ptr, size_t size, size_t nmemb, void *stream){ size_t written = fwrite(ptr, size, nmemb, (FILE *)stream); return written;}
read from json file
#define PATH_FILE "/home/aq/test.json"void ReadJsonMsg(){ using namespace std; Json::Reader reader; Json::Value root; ifstream ifs; ifs.open(PATH_FILE, ios::binary); if(reader.parse(ifs,root)) { string message = root["message"].asString(); int success = root["success"].asInt(); cout << "Whether success :" << success << endl <<endl; cout << "The output of return message is :" << message << "" << endl <<endl; cout << "Reading Complete!" << endl; } ifs.close();}
main function
int main(int argc, char *argv[]) { using namespace std; ros::init(argc,argv,"json_ros"); //define the json value Json::Value root; root["call"] = Json::Value("1"); Json::FastWriter fw; std::string number=fw.write(root); int number_size = number.length(); char JsonData[number_size]; //set JsonData to 0. memset(JsonData, 0, sizeof(JsonData)); strcpy(JsonData,number.c_str()); CURL *curl; CURLcode res; curl_global_init(CURL_GLOBAL_ALL); curl = curl_easy_init(); if (curl) { //data exchanged curl_easy_setopt(curl, CURLOPT_URL, "http://"); struct curl_slist *headers = NULL; headers = curl_slist_append(headers, "Accept:application/json"); headers = curl_slist_append(headers, "Content-Type:application/x-www-form-urlencoded"); headers = curl_slist_append(headers, "charset:utf-8"); curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers); curl_easy_setopt(curl, CURLOPT_POSTFIELDS, "JsonData"); FILE *pagefile; curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_callback); fopen(PATH_FILE, "wb+"); if (pagefile) { curl_easy_setopt(curl, CURLOPT_WRITEDATA, pagefile); res = curl_easy_perform(curl); if (res != CURLE_OK) { fprintf(stderr, "curl_easy_perform() failed: %s\n",curl_easy_strerror(res)); } fclose(pagefile); } curl_easy_cleanup(curl); } curl_global_cleanup(); ReadJsonMsg();}
0 0
- ROS下使用CURL与服务器数据交换
- login与服务器交换数据
- nodejs客户端与服务器双向数据交换
- 用Delphi建立通讯与数据交换服务器—Transceiver技术剖析(下)
- 用Delphi建立通讯与数据交换服务器—Transceiver技术剖析(下)
- 用Delphi建立通讯与数据交换服务器—Transceiver技术剖析(下)
- 用Delphi建立通讯与数据交换服务器—Transceiver技术剖析(下)
- Jquery下Ajax与PHP数据交换
- Jquery下Ajax与PHP数据交换
- JQuery下Ajax与PHP数据交换
- Jquery下Ajax与PHP数据交换
- Jquery下Ajax与PHP数据交换
- Jquery下Ajax与PHP数据交换
- Jquery下Ajax与PHP数据交换
- Win7 下安装与使用Curl
- curl 与服务器定时
- Android与与服务器交换数据、上传、下载、读取文件
- 使用ioctl与内核交换数据
- 01-Popover跳转
- 对before和after这 两个伪类的理解
- lep开发笔记 -- 内存泄漏
- 【android开发】动态设置屏幕常亮/不常亮
- 关于C语言中scanf函数的小结
- ROS下使用CURL与服务器数据交换
- JS中数组的操作
- Android特效专辑(八)——实现心型起泡飞舞的特效,让你的APP瞬间暖心
- 第四章 手机平板要兼顾-探究碎片
- cannot open source file "boost..."
- Git和GitHub使用总结
- Fiddler抓取HTTPs流量
- 替换vCenter Server 5.0证书
- TCP和UDP的区别