curl向web服务器发送json数据

简介: c++使用libcurl: 1 /* 2 *g++ demo.cpp -g -Wall -lcurl 3 */ 4 5 #include 6 #include 7 #include 8 #include 9 #include ...

c++使用libcurl:

  1 /*
  2  *g++ demo.cpp  -g -Wall -lcurl
  3  */
  4 
  5 #include <string.h>
  6 #include <stdlib.h>
  7 #include <stdio.h>
  8 #include <iostream>
  9 #include <curl/curl.h>
 10 
 11 int getUrl(const char* filename)
 12 {
 13     CURL* curl;
 14     CURLcode res;
 15     FILE* fp; 
 16     if((fp=fopen(filename, "w"))==NULL){
 17         return -1; 
 18     }   
 19     struct curl_slist *headers = NULL;
 20     headers = curl_slist_append(headers, "Accept:Agent-007");
 21     curl = curl_easy_init();    
 22     if(curl){
 23         curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers);
 24         curl_easy_setopt(curl, CURLOPT_URL, "http://www.baidu.com");
 25         curl_easy_setopt(curl, CURLOPT_WRITEDATA, fp);
 26         curl_easy_setopt(curl, CURLOPT_HEADERDATA, fp);
 27 
 28         //0: success, other: failure
 29         res = curl_easy_perform(curl);
 30         if(res != 0){ 
 31             std::cout <<"error:"<<curl_easy_strerror(res) << std::endl;
 32         }
 33         curl_slist_free_all(headers);
 34         curl_easy_cleanup(curl);
 35         fclose(fp);
 36     }
 37     return res;
 38 }
 39 
 40 /*
 41 int postUrl(const char* filename)
 42 {
 43     CURL* curl;
 44     CURLcode res;
 45     FILE* fp;
 46 
 47     if((fp=fopen(filename, "w"))==NULL){
 48         return 1;
 49     }
 50     curl = curl_easy_init();
 51     if(curl){
 52     
 53     }
 54 }
 55 */
 56 
 57 //typedef  int  (* func)(int,  int);
 58 typedef  size_t (*cb_func)(void*, size_t, size_t, void*);
 59 size_t write_data(void *buffer, size_t size, size_t nmemb, void *userp) {
 60     FILE *fptr = (FILE*)userp;
 61     fwrite(buffer, size, nmemb, fptr);
 62     return size*nmemb;
 63 }
 64 
 65 int PostData(const char* postdata, const char* url,
 66              cb_func write_data, void* fptr)
 67 //int PostData(const char* postdata, const char* url)
 68 {
 69     CURL* curl = NULL;
 70     CURLcode res;
 71     char tmp[32] = {0};
 72     struct curl_slist* headers = NULL;
 73     if(!url){
 74         return -1;
 75     }
 76     std::cout <<"send data url:" << url << std::endl;
 77     snprintf(tmp, sizeof(tmp), "Content-Length: %d", (int)strlen(postdata));
 78     std::cout <<"Content-Length: " << tmp << std::endl;
 79     headers = curl_slist_append(headers, "Accept: application/json");
 80     headers = curl_slist_append(headers, "Content-Type: application/json");
 81     headers = curl_slist_append(headers, "charset: utf-8");
 82     headers = curl_slist_append(headers, tmp);
 83 
 84     curl_global_init(CURL_GLOBAL_ALL);
 85     curl = curl_easy_init();
 86     if(curl){
 87         curl_easy_setopt(curl, CURLOPT_URL,url);
 88         curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers);
 89         curl_easy_setopt(curl, CURLOPT_TIMEOUT, 1); //超时时间1s
 90         curl_easy_setopt(curl, CURLOPT_POST, 1L);
 91         curl_easy_setopt(curl, CURLOPT_POSTFIELDS, postdata);
 92         curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_data);
 93         curl_easy_setopt(curl, CURLOPT_WRITEDATA, fptr);
 94         //curl_easy_setopt(curl, CURLOPT_VERBOSE, 1L);   //debug 
 95         res = curl_easy_perform(curl);
 96         if(res!=0){
 97             std::cout<<"error no:"<<curl_easy_strerror(res)<<std::endl;
 98         }
 99         curl_slist_free_all(headers);
100         curl_easy_cleanup(curl);
101         return res;
102     }else{
103         curl_slist_free_all(headers);
104         return -2;
105     }
106 }
107 
108 int main()
109 {
110     const char* tt = "./aa.out";
111     int aa =  getUrl(tt);
112     std::cout << "return :" << aa << std::endl;
113     FILE* fptr;
114     if((fptr=fopen("./result", "w"))==NULL){
115         std::cout << "file open error" << std::endl;
116         exit(1);
117     }
118 
119     const char* jsondata = "{\"usrname\": \"cp\", \"passwd\": \"test\"}";
120      const char* url = "http://192.168.2.163:8080/mystorage/mytest.php";
121     aa = PostData(jsondata, url, write_data, fptr);
122     return 0;
123 }

 

相关文章
|
2月前
|
数据采集 JSON 数据处理
抓取和分析JSON数据:使用Python构建数据处理管道
在大数据时代,电商网站如亚马逊、京东等成为数据采集的重要来源。本文介绍如何使用Python结合代理IP、多线程等技术,高效、隐秘地抓取并处理电商网站的JSON数据。通过爬虫代理服务,模拟真实用户行为,提升抓取效率和稳定性。示例代码展示了如何抓取亚马逊商品信息并进行解析。
抓取和分析JSON数据:使用Python构建数据处理管道
|
20天前
|
JSON 数据格式 索引
Python中序列化/反序列化JSON格式的数据
【11月更文挑战第4天】本文介绍了 Python 中使用 `json` 模块进行序列化和反序列化的操作。序列化是指将 Python 对象(如字典、列表)转换为 JSON 字符串,主要使用 `json.dumps` 方法。示例包括基本的字典和列表序列化,以及自定义类的序列化。反序列化则是将 JSON 字符串转换回 Python 对象,使用 `json.loads` 方法。文中还提供了具体的代码示例,展示了如何处理不同类型的 Python 对象。
|
24天前
|
JSON 缓存 前端开发
PHP如何高效地处理JSON数据:从编码到解码
在现代Web开发中,JSON已成为数据交换的标准格式。本文探讨了PHP如何高效处理JSON数据,包括编码和解码的过程。通过简化数据结构、使用优化选项、缓存机制及合理设置解码参数等方法,可以显著提升JSON处理的性能,确保系统快速稳定运行。
|
2天前
|
存储 运维 算法
服务器数据恢复—raid6阵列硬盘重组raid5阵列如何恢复raid6阵列数据?
服务器存储数据恢复环境: 存储中有一组由12块硬盘组建的RAID6阵列,上层linux操作系统+EXT3文件系统,该存储划分3个LUN。 服务器存储故障&分析: 存储中RAID6阵列不可用。为了抢救数据,运维人员使用原始RAID中的部分硬盘重新组建RAID并进行了初始化。 初始化开始一段时间后,运维人员察觉到情况有异后强制终止初始化,这个时候初始化已经完成一半以上。数据部分已被不可逆的破坏。
|
2月前
|
存储 数据挖掘
服务器数据恢复—用RAID5阵列中部分盘重建RAID5如何恢复原raid5阵列数据?
服务器数据恢复环境: 一台服务器挂接一台存储,该存储中有一组由5块硬盘组建的RAID5阵列。 服务器故障: 存储raid5阵列中有一块硬盘掉线。由于RAID5的特性,阵列并没有出现问题。工作一段时间后,服务器出现故障,用户方请人维修。维修人员在没有了解故障磁盘阵列环境的情况下,用另外4块硬盘(除去掉线的硬盘)重新创建了一组全新的RAID5阵列并完成数据同步,导致原raid5阵列数据全部丢失。
|
17天前
|
JSON API 数据安全/隐私保护
拍立淘按图搜索API接口返回数据的JSON格式示例
拍立淘按图搜索API接口允许用户通过上传图片来搜索相似的商品,该接口返回的通常是一个JSON格式的响应,其中包含了与上传图片相似的商品信息。以下是一个基于淘宝平台的拍立淘按图搜索API接口返回数据的JSON格式示例,同时提供对其关键字段的解释
|
2月前
|
JSON JavaScript Java
在Java中处理JSON数据:Jackson与Gson库比较
本文介绍了JSON数据交换格式及其在Java中的应用,重点探讨了两个强大的JSON处理库——Jackson和Gson。文章详细讲解了Jackson库的核心功能,包括数据绑定、流式API和树模型,并通过示例演示了如何使用Jackson进行JSON解析和生成。最后,作者分享了一些实用的代码片段和使用技巧,帮助读者更好地理解和应用这些工具。
在Java中处理JSON数据:Jackson与Gson库比较
|
2月前
|
JSON API 数据格式
商品详情数据JSON格式示例参考(api接口)
JSON数据格式的商品详情数据通常包含商品的多个层级信息,以下是一个综合多个来源信息的JSON数据格式的商品详情数据示例参考:
|
10天前
|
人工智能 弹性计算 编解码
阿里云GPU云服务器性能、应用场景及收费标准和活动价格参考
GPU云服务器作为阿里云提供的一种高性能计算服务,通过结合GPU与CPU的计算能力,为用户在人工智能、高性能计算等领域提供了强大的支持。其具备覆盖范围广、超强计算能力、网络性能出色等优势,且计费方式灵活多样,能够满足不同用户的需求。目前用户购买阿里云gpu云服务器gn5 规格族(P100-16G)、gn6i 规格族(T4-16G)、gn6v 规格族(V100-16G)有优惠,本文为大家详细介绍阿里云gpu云服务器的相关性能及收费标准与最新活动价格情况,以供参考和选择。
|
15天前
|
机器学习/深度学习 人工智能 弹性计算
什么是阿里云GPU云服务器?GPU服务器优势、使用和租赁费用整理
阿里云GPU云服务器提供强大的GPU算力,适用于深度学习、科学计算、图形可视化和视频处理等多种场景。作为亚太领先的云服务提供商,阿里云的GPU云服务器具备灵活的资源配置、高安全性和易用性,支持多种计费模式,帮助企业高效应对计算密集型任务。
下一篇
无影云桌面