HTTP
文章平均质量分 62
涉及HTTP协议、C/C++ 例子
猿来是码农
这个作者很懒,什么都没留下…
展开
-
HTTP 的 multipart 类型
里有一个 multipart 多部分对象集合类型,这个类型 http 指南里有讲到:MIME 中的 multipart(多部分)电子邮件报文中包含多个报文,它们合在一起作为单一的复杂报文发送。每一部分都是独立的,有各自的描述及内容的集;而在 Mongoose.c 源码里,是这样处理 multipart 类型的报文的,判断头部字段 Content-Type 为 multipart 时,交由相关处理函数进行处理,然后就 return 了,不再后续处理了。表格情形还没试验过,这里主要讲文档情形的。原创 2024-02-27 15:47:50 · 606 阅读 · 0 评论 -
HTTP MIME 类型
子类型也可以是主类型(如:text/text)、IANA 注册的子类型、或者是(以”x-“开头的)实验性扩展标记。这个类型就是 Web 服务端返回的 Content-Type 字段的内容,例子可以参考。MIME 类型是一种文本标记,表示一种主要的对象类型和一个特定的子类型,中间由一条斜杠来分隔。2,普通的 ASCII 文档由 text/plain 类型来标记。1,HTML 格式的文本文档由 text/html 类型来标记。其语法为:主类型/子类型 (可选的参数列表)常见的主类型 MIME。原创 2024-02-02 15:20:08 · 778 阅读 · 0 评论 -
http 协议文件上传异常处理--mongoose
接着上一篇说到的,在发送文件数据前服务端出错了,且回应了,客户端应该不进行数据的发送。这里演示一种情况:指定的目录不存在,服务端应答"no suce directory",然后关闭连接。这样操作似乎是可以了,但奇怪的是,同样的代码我在嵌入式设备上测试时,结果跟这个不一样,操作嵌入式设备,文件也会传输,同时 postman 取不到应答消息,不知为何?实际能得到的结果是,客户端(postman)确实没有发送数据。原创 2022-09-02 09:29:50 · 1361 阅读 · 0 评论 -
mongoose 搭建 http 服务 -- 编译
编译 32 位 json 库也很简单,修改其目录下的 Makefile,添加编译选项 -m32 即可编译出 32 位的库了。所以只能编译 32 位的程序了,修改Makefile ,添加编译选项 -m32 可以编译 32 位程序。libssl.a 和 libssl.so 静态库和动态库是有的,但都是 32 位的。Makefile 里添加库路径及库名称:-L../json -ljson。json库明明是有的,结果一看是 64 位的。3,没有编译 mongoose.c 问题。6,json 库找不到的问题。....原创 2022-08-26 19:31:52 · 709 阅读 · 0 评论 -
http 协议大文件下载
响应的正文只能通过http响应消息进行传输,如果是小文件(比如小于1M)传输,则没有什么问题,直接把文件内容加载到正文进行回应即可,但如果是大文件(比如大于10M),不可能把文件内容加载到正文吧,如果更大的文件呢,100M?下载一个 19 M 的文件是可以成功的,再大的文件没有试,因为下载速度有点慢。那下载下来的文件是否有异常呢?windows上下载的,所以把这个文件拷贝到 CentOS 服务上看一下了,这两个文件经过 md5sum 后值是一样的,那我们下载的文件就是正常的。那用c++代码怎么写呢?....原创 2022-08-31 23:25:51 · 4823 阅读 · 0 评论 -
http 协议文件上传 - mongoose
MG_EV_HTTP_PART_BEGIN 事件时,可以获取到上传过来的文件名,MG_EV_HTTP_PART_DATA 事件时,可以获取到文件数据,所以这两个就是创建一个文件,然后往里面写数据,在 MG_EV_HTTP_PART_END 时,关闭文件,回复消息给客户端,然后断开连接。这几个事件类型,MG_EV_HTTP_PART_DATA 会调用多次,取决于上传的文件大小,及一次最大读取数据的大小(即:MG_TCP_IO_SIZE),其他的事件类型只调用一次。时调用,即 uri=/fileUpload。.原创 2022-09-01 15:18:26 · 1568 阅读 · 0 评论 -
http 协议目录操作--mongoose
其实这个参数最主要关心两个成员:opts.document_root 和 opts.enable_directory_listing。前几篇文章已经介绍了文件的下载与上传,操作的都是文件,而如果是操作目录呢,应该怎么做呢?这里只是简单地处理了目录和普通文件的区别,还有其他如字符设备文件、块设备文件、链接文件、socket 文件这里不作处理。这样就得出了 compile 的相对路径了,那程序本身就可以访问这个目录。就是用来设置目录的,我们可以简单看下这个函数做了什么。这样目录操作就已经正常了。原创 2022-09-02 19:17:47 · 752 阅读 · 0 评论 -
http 协议之 Content-Type
Content-Type 字段是 http 服务端返回给客户端时,head 里面带上的,这个字段表明服务端返回给客户端的 body 是什么类型的,然后客户端就可以根据这个类型进行文件处理。如浏览器客户端,针对 text/html 类型时,是直接显示或解析成网页进行展示,针对 image/jpg 时,浏览器会展示成图片,针对 audio/mpeg 类型时,就当成音频播放,针对 video/mp4 类型时,就当成视频来播放。此类型即为可读类型,text 文本时,直接显示,html 时,网页显示。......原创 2022-08-29 21:49:44 · 4493 阅读 · 2 评论 -
Mongoose http server 例子
今天使用的是mongoose 自带的例子,位于源码目录的 examples/http-server 下的 main.c,因为我使用了c++的,所以我自己创建了目录 myExample/http_server,把它的 main.c 换成了 main.cpp,makefile 使用自己的,在编译的时候解决一下编译问题即可。0x1f30580 + 3(method 的长度) + 1(一个空格) = 0x1f30584,0x1f30584 + 1(uri的长度)+1(一个空格) = 0x1f30586。原创 2023-08-10 15:04:27 · 1013 阅读 · 0 评论 -
libcurl使用之http post 问题
最近在和客户调试接口,在板子上使用到post功能时,突然遇到一个问题:我上报的数据对方解析错误,返回给我的错误信息如:我上报是数据格式是json,但对方解析错误了。奇怪的是,这个数据用postman发送却是正常的,如:后来排查到是设置的数据格式不对导致的问题,原接口中数据格式为:这个数据格式需要上报的是表单形式的数据,其表单形式需要用"&xxx=",类似如下:而像上面postman形式的是纯文本形式。应该设置成text/plain,其实也可以从postman里看到例子..原创 2021-10-26 09:19:19 · 466 阅读 · 0 评论 -
mongoose 搭建http服务-下载
今天突然有个读者问到如何从搭建的服务上下载东西,于是今天调试了一下这个代码。编译后我是将程序拷贝到嵌入式板上运行的,因为一些依赖库当时编译的都是 arm 版本,所以这里没有直接在编译服务器 CentOS 上运行。我的嵌入式设备 ip 为 192.168.2.101,这里是 ssh 连接上去的。http 初次访问都会先获取一个名为 favicon.ico 的文件,这是一个图标文件。可以下载操作,但速度非常慢,不知为什么?若有大神知道,望指点指点。...原创 2022-08-25 22:38:11 · 1115 阅读 · 0 评论