当使用C++做HTTP客户端时,目前通用的做法就是使用libcurl。其官方网站的地址是http://curl.haxx.se/,该网站主要提供了Curl和libcurl。Curl是命令行工具,用于完成FTP, FTPS, HTTP, HTTPS, GOPHER, TELNET, DICT, FILE 以及 LDAP的命令的请求及接收回馈。libcurl提供给开发者,用于使用C++跨平台的开发各种网络协议的请求及响应。里面的文档非常齐全,不过都是英文的。
下载libcurl包,如果使用Linux平台,建议下载源文件编译;如果使用Windows平台,建议下载Win32 - MSVC,下载地址是:http://curl.haxx.se/download.html
使用前请先行配置。
#include<curl/curl.h>
这里是要在一个MFC工程中调用libcurl库,为此新开辟了一个线程来进行处理。
AfxBeginThread(trans, pParam, 0, 0, NULL);
UINT CMFCApplication1Dlg::trans(LPVOID pParam)
{
CURL *curl = 0;
CURLcode res;
curl = curl_easy_init();//初始化 得到curl的指针
curl_global_init(CURL_GLOBAL_ALL);//全局初始化
struct curl_slist *headers = NULL;
char s[1024];
memset(s, 0, sizeof(s));
if (curl != 0) {
curl_easy_setopt(curl, CURLOPT_URL, "http://www.baidu.com");
curl_easy_setopt(curl, CURLOPT_VERBOSE, 1);
curl_easy_setopt(curl, CURLOPT_TIMEOUT, 1);
headers = curl_slist_append(headers, "Accept: application/json");
headers = curl_slist_append(headers, "Content-Type:application/json");
headers = curl_slist_append(headers, "charsets: utf-8");
curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers);
curl_easy_setopt(curl, CURLOPT_POST, 1); // POST
//if(pParam!=NULL)
string a = CT2A((*(CString*)pParam).GetBuffer(0));
strcpy_s(s, a.c_str());
curl_easy_setopt(curl, CURLOPT_POSTFIELDS,s);
res = curl_easy_perform(curl);//执行http请求 函数完成传输任务
if (res != CURLE_OK) {
fprintf(stderr, "curl_easy_perform() failed: %s\n", curl_easy_strerror(res));
}
curl_slist_free_all(headers);
curl_easy_cleanup(curl);//回收curl指针
curl_global_cleanup();
}
//std::cin.get();
return 0;
}
代码是根据命令行转化过来的,命令行大致如下:
curl -v -x POST -d{
} --header "Content-Type:application/json"
遇到的问题主要是:
数据包的格式:
注意双引号
CString number = CString("\"number\":");
自己搭建的json的数据包总是无法上传,后来查找blog改变了传进来的数据的格式。
curl_easy_setopt(curl, CURLOPT_POSTFIELDS,s);
6.2 Spring Boot集成jpaJava持久化API(JPA,Java Persistence API)是一个将对象映射为关系数据库的标准技术。JPA通过注解或XML描述ORM(Object Relationship Mapping,对象-关系表的映射关系),并将运行期的实体对象持久化到数据库中。其中,SQL(结构化查询语言, Structured Query Language),是持
前言:ubuntu 16.04刚装的PCL 1.8.1Qt环境下c++开发使用CMAKE我做了什么呢:在程序里include &lt;pcl/...&gt; (pcl的库)如:#include &lt;iostream&gt;#include &lt;stdio.h&gt;#include &lt;stdlib.h&gt;#include &lt;pcl/io/pcd_io.h&gt;using ...
我万分感动,我不知道这种久违的感觉如何又在我生活中出现,那一刻我感觉自己真正有了母亲,师母这个憨厚、爽朗的女人似乎就是我的母亲,她让我有了母爱的感觉。 我对师母笑了笑,眼泪几乎要掉了下来,于是接过了碗,在师母亲切的注视下低头把碗里的肉狼吞虎咽地吃掉了。我想此时师母一定有某种成就感,猜想她是不是希望自己有我这样一个乐天、性格外向的男孩,这可能是许多只有女儿的家庭中母亲的一个恋子情结。 晚饭终
''' PIL.Image, numpy, tensor, cv2 之间的互转'''import cv2import torchfrom PIL import Imageimport numpy as npfrom torchvision import transformsimg_path='catdog.jpg'img_PIL = Image.open(img_path)....
1、此方法已过时,现在可替换的实现方法有request.getSession().getServletContext().getRealPath("/")在Servlet 里用this.getServletContext().getRealPath("/");获得绝对路径。struts里用this.getServlet().getServletContext().getRealPa
select substring(sys.fn_sqlvarbasetostr(HashBytes('MD5','123456')),3,32)
可拖动弹窗:1.新建一个js,放置如下js代码import Vue from 'vue';//使用Vue.directive()定义一个全局指令//1.参数一:指令的名称,定义时指令前面不需要写v-//2.参数二:是一个对象,该对象中有相关的操作函数//3.在调用的时候必须写v-const drag = Vue.directive('drag', { //1.指令绑定到元素上回立刻执行bind函数,只执行一次 //2.每个函数中第一个参数永远是el,表示绑定指令的元素,el参数
为了建立一个scope chain, 每个JavaScript的代码执行上下文都提供了this关键字。In its most common usage, this serves as an identity function, providing our neighborhoods a way of referring to themselves. We can’t always rely on...
作者:李少侠链接:https://zhuanlan.zhihu.com/p/35303567Visual Studio Code(VS Code)近年来获得了爆炸式...
1、IAR 1.30 下载问题使用ST-Link V2下载 IAR 1.30工程的STM8L的工程代码,发现下载不了,IAR软件的Debug Log显示:An error occurred while retrieving GDI features: gdi-error [40201]根据网络的搜索结果是缺失 IAR debugger-support-files文件,把 IAR 1.30软件卸载重装,解决了问题。2、IAR 3.10 下载问题IAR 3.10无法下载STM8的代码,提示错误S
想让别人访问你的网站么?我用亲身经历来告诉你几种可行方法...O(∩_∩)O