curl 怎么在xp下使用_Http Post 快速使用

点击上方蓝字可直接关注!方便下次阅读。如果对你有帮助,麻烦点个在看或点个赞,感谢~

3b64682d8876d0e7f10c092071b39885.png

一直对http很陌生,这次借助libcurl分享一个快速使用http post的案例。

平台:ubuntu16.04

一、libcurl的安装

1. Git上下载 master最新代码

https://github.com/curl/curl.git

我是下载的Zip包,git clone有点慢

2. 编译只有configure.ac文件和Makefile.am文件的工程

源码包还可以用cmake编,但是我失败了;所以用的传统./configure方式。

张宇说,没有条件创造条件,所以构造configure文件。

libtoolizeaclocalautoheaderautoconfautomake --add-missing

这个流程亲测可用!可以写个脚本文件,以后直接用就行。注意缺什么安什么就行了。

3. 配置configure参数

./configure --prefix=/opt/libcurl --without-ssl

不使用ssl;设置安装路径为/opt/libcurl,方便以后移除。

4. 传统技能

make

sudo make install

二、使用Python搭建http server

Libcurl是有例子的,在/curl-master/docs/examples下。显然我没有仔细看,直接在网上搜别人怎么用的,然后没用明白,悲伤。

没有一个server,太难测试了,而搭建server又太难,恰好python解决了这个棘手的问题。只需6行就可以完美解决。

from bottle import route, request, run @route('/hello', method=['GET', 'POST']) def dh():            return 'hello ' + request.query.str if __name__ == "__main__":       run(host='0.0.0.0',  port=8080,  reloader=True)

需要安装python bottle 才可以运行,步骤如下:

sudo apt install python-pip

python2 -m pip install bottle

注:使用的是python2测试的 

运行效果如下:

0d013a2f7ca9028a47ad24de55bb5b75.png

三、libcurl Post例子

libcurl 的Post功能只是它众多功能中的一个,其他的我用不到,就不介绍了。

使用cmake构建的工程,主测试程序如下:

#include #include #include #include #include "curl.h"int httpPost( uint8_t * strPost, uint32_t msg_size){    FILE *fpBody = NULL;    FILE *fpHeadData = NULL;    if ((fpBody = fopen("BodyData", "w")) == NULL)  // 返回body用文件存储        return -1;    if ((fpHeadData = fopen("HeaderData", "w")) == NULL)  // 返回head用文件存储        return -1;    CURLcode ret;      struct curl_slist *headers=NULL;     CURL* curl = curl_easy_init();      if(NULL == curl)      {          return CURLE_FAILED_INIT;      }     curl_easy_setopt(curl, CURLOPT_POST, 1);  //设置为post方式//设置内容类型,可以设置为json,本次测试未使用    // headers = curl_slist_append(headers, "Content-Type: application/octet-stream");    curl_easy_setopt(curl, CURLOPT_URL,"http://127.0.0.1:8080/hello?str=world");; //设置URL    //curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers); // 改协议头    curl_easy_setopt(curl, CURLOPT_POSTFIELDS, strPost);  //设置post buf    curl_easy_setopt(curl, CURLOPT_POSTFIELDSIZE, msg_size); //设置buf大小,上次就是被坑在这里了    curl_easy_setopt(curl, CURLOPT_WRITEDATA, fpBody); //将返回的bosy数据输出到fp指向的文件    curl_easy_setopt(curl, CURLOPT_HEADERDATA, fpHeadData); // 将返回的http头输出到fp指向的文件    curl_easy_setopt(curl, CURLOPT_NOSIGNAL, 1);      curl_easy_setopt(curl, CURLOPT_CONNECTTIMEOUT, 3);  //超时时间为3秒    curl_easy_setopt(curl, CURLOPT_TIMEOUT, 3);     ret = curl_easy_perform(curl);  //执行    curl_easy_cleanup(curl);      //释放资源    curl_slist_free_all(headers);   //释放资源    if(ret != CURLE_OK)     {      fprintf(stderr, "curl_easy_perform() failed: %s\n",curl_easy_strerror(ret));    }    return ret; }int main(){    uint8_t postData[] = "postContent"; // 未使用    httpPost( postData, strlen(postData));    return 0;}

说下流程:

现在我也不是很懂这些流程,按照相应的格式设置,能和对方server通信即可。

Server说明如下:

①请求类型Http Post

②Http Content-Type: application/octet-stream

效果如下:

b8cc11d8d404a68b71e15138f7c7564c.png

四、总结

如何快速使用别人的库。

生活挺像数学的:已知条件就是你的当下,要你解的却是未来的你。

你说谁能知道未来的自己会是什么样?但是有人数学分就是比你高。

由现在是可以大概知道未来的自己会是什么样的~ ~ ~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/419875.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2015-05-31

ARC4random 生成任意整数 要生成某一范围的数可以用取模运算 ID对象不能用点语法 Arc4random()%12 等价于arc4random_uniform(12) 文本框有个inputview 用来设置自定义键盘 toolbar 中的identifier 用来设置样式,其中flexible space为可伸缩的空条(使右…

ajax 高并发请求,理解node.js处理高并发请求原理

很少分享技术文章,写的不好的地方请大家多多指教,本文是自己对于node.js的一些见解,如有纰漏请在评论区交流。高并发策略通常高并发的解决方案就是提供多线程模型,服务器为每个客户端请求分配一个线程,使用同步 I/O&am…

abaqus生成adams柔性体_基于ADAMS 的大型反铲挖泥机加装破碎锤 结构动力学分析

刘 斌 徐沪萍 王 磊武汉理工大学物流工程学院 武汉 430063摘 要:以配备液压破碎锤的反铲挖泥船反铲挖泥机为研究对象,简单介绍加装液压破碎锤方案,然后运用动力学理论和相关的动态仿真软件,通过建立反铲挖泥机的刚柔耦合模型&…

Vector 特性

1.Vector是一个连续内存占用的容器 2.每次Insert,都会将插入的对象先析构,然后复制一个副本添加到容器内 3.容器的大小先是1,然后是2,然后是4,也可以使用reserve来重新制定队列的长度 4.当erase删除一个或者clear之后&…

路由器桥接显示服务器已满,两个迅捷路由器经过有线桥接已经成功连接上,但是测试的时候副路由器却连接不上服务器?为什么?谢谢!...

主路由器工作模式为AP,第二级路由器设置WDS。简单点就是:主路由器就是普通上网设置,帐号密码,指定信道,无线密钥,DHCP启用等等,副路由器,只是设置信道,WDS打勾&#xff0…

rust加载不进去服务器eac_基于腾讯云的 Rust 和 WebAssembly 函数即服务

腾讯云云函数 (SCF) 已经支持十多种编程语言和运行时框架。腾讯云最近发布的 SCF custom runtime(自定义运行时)更进一步 —— SCF 现在可以支持用任何编程语言编写的函数。本文将介绍如何在云函数 SCF 中运行用 Rust 编写的 WebAssembly 函数。我们先介…

SChema中group指示器的使用

<?xml version"1.0" encoding"UTF-8"?> <!-- edited with XMLSpy v2011 (http://www.altova.com) by qmy (sigmartix) --> <xs:schema xmlns:xs"http://www.w3.org/2001/XMLSchema" elementFormDefault"qualified" a…

java ee项目部署到服务器上405,HTTP状态405 - HTTP POST方法不受此URL支持:采用的GlassFish服务器的NetBeans...

I am getting this error on using post method in my form-- HTTP Status 405 - HTTP method POST is not supported by this URL.我register.html文件如下&#xff1a;Register formName:Email ID:Password:我Register.java servlet代码是如下package Glassfish;import java.…

ceb怎么转换成word_PDF怎么转换成Word?分享免费转换技巧!

PDF怎么转换成Word&#xff1f;pdf格式无法编辑众所周知的事&#xff0c;但如果我们需要将其进行编辑使用的话&#xff0c;就需要将pdf格式转换成word格式。可是怎么将pdf转换成word一直是件令人头疼的事&#xff01;所以今天小编给大家分享几个pdf转word免费转换技巧&#xff…

[FZYZOJ 1038] 隧道

P1038 -- 隧道 时间限制&#xff1a;1000MS 内存限制&#xff1a;65536KB Description 一座小镇正在着手建造自己的地铁线路网。小镇坐落在许多小岛上&#xff0c;小岛之间通过隧道或者桥梁连接。地铁就在这些已有的桥梁和隧道的基础上建成。由于地铁主要是在地下&#xf…

音创ktv点歌系统服务器,音创ktv点歌系统家庭版

光行资源网为用户提供的音创ktv点歌系统电脑版是为ktv和家庭影院专门设计打造的点歌软件&#xff0c;相信很多朋友们都去过ktv点歌&#xff0c;大家点歌时的界面就是专门的点歌系统。特色1、方便性&#xff1a;安装调试简单方便&#xff0c;减少了您购买后所带来的多种维护烦恼…

7极限精简版64位_DNF:国服更新64位客户端深度体验,真的有如此丝滑吗?

DNF最新最快资讯&#xff0c;最全最细攻略&#xff0c;尽在骑乌龟的蜗牛12年&#xff0c;地下城的游戏客户端终于获得了升级&#xff0c;从32位更新到了64位&#xff0c;关于更新带来的游戏好处大家应该都在很多地方看过&#xff0c;而国服正式服也终于在8.20版本的更新中将客户…

MYSQL BENCHMARK函数的使用

MYSQL BENCHMARK函数是最重要的函数之一&#xff0c;下文对该函数的使用进行了详尽的分析&#xff0c;如果您对此感兴趣的话&#xff0c;不妨一看。 下文为您介绍的是MYSQL BENCHMARK函数的语法&#xff0c;及一些MYSQL BENCHMARK函数相关问题的测试&#xff0c;供您参考学习。…

服务器无法通过系统非页面共享区进行分配,服务器无法通过系统非页面共享区来进行分配的解决方法...

服务器开始阶段性的出现死机状态了。隔一段时间就无法连接了。重启后正常&#xff0c;过一段时间又是同样的问题。事件查看器中有大量的同样报错&#xff1a;事件ID&#xff1a;2020描述&#xff1a;服务器无法通过系统页面共享区来进行分配&#xff0c;因为共享区当前是空的。…

iou画 yolov3_专栏 | 【从零开始学习YOLOv3】4. YOLOv3中的参数进化

原标题&#xff1a;专栏 | 【从零开始学习YOLOv3】4. YOLOv3中的参数进化前言&#xff1a;YOLOv3代码中也提供了参数进化(搜索)&#xff0c;可以为对应的数据集进化一套合适的超参数。本文建档分析一下有关这部分的操作方法以及其参数的具体进化方法。1. 超参数YOLOv3中的 超参…

ORACLE中的异常处理

异常的语法格式 在begin语句内&#xff1a; exception when then when then when others then --异常处理 --首先创建一份对象的用法 create type xtype as object (name varchar2(20)); declare x xtype; begin x.name:aaa; exception when ACCESS_INTO_NULL then dbms_…

文件已经上传到服务器翻译,服务器接受上传的优化 翻译+源码分析

一般的做法err : r.ParseMultipartForm(32 << 20) // 32Mbif err ! nil {http.Error(w, err.Error(), http.StatusBadRequest)}问题请注意&#xff0c;32Mb是分配给请求体的字节存储在内存中&#xff0c;而不是请求体的限制&#xff0c;当满(33Mb)时&#xff0c;它将写入…