ESP32开发-HTTP POST请求发送图片

2023-11-12

HTTP POST请求发送图片

ESP32中有HTTP相关的请求demo,但是demo中只是简单的HTTP header加上body。如果服务器对POST请求有要求,比如数据以key-value的形式传输,那么服务器会无法正常处理请求,从而返回错误码500。

发送POST请求

基于esp_http_client中的post请求demo进行修改,其中传输的图片通过cmake转化成二进制文件,具体可以参考esp-idf中的esp_http_client demo。

void http_send_img(){

    char *post = (char *)malloc(1024+(http_jpeg_end-http_jpeg_start-1));
    memset(post,0,1024+(http_jpeg_end-http_jpeg_start-1));
    esp_http_client_config_t config = {
        .url = "url",
        .event_handler = _http_event_handler,      
        .method = HTTP_METHOD_POST,
    };
    esp_http_client_handle_t client = esp_http_client_init(&config);

    esp_http_client_set_header(client, "Content-Type", "multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW");
    memcpy(post,"------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"file\"; filename=\"img.jpeg\"\r\nContent-Type: image/jpeg\r\n\r\n",135);
    memcpy(post+135,http_jpeg_start,(http_jpeg_end-http_jpeg_start-1));
    memcpy(post+135+(http_jpeg_end-http_jpeg_start-1),"\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW--\r\n",45);
    esp_http_client_set_post_field(client, post, 180+(http_jpeg_end-http_jpeg_start-1));
    esp_err_t err = esp_http_client_perform(client);
    if (err == ESP_OK) {
        ESP_LOGI(TAG, "HTTP POST Status = %d, content_length = %d",
                esp_http_client_get_status_code(client),
                esp_http_client_get_content_length(client));
    } else {
        ESP_LOGE(TAG, "HTTP POST request failed: %s", esp_err_to_name(err));
    }
    esp_http_client_cleanup(client);
    
}

其中,name=“file”,file即为服务器需要post请求携带的key。

发送结果

在这里插入图片描述
用wireshark抓包可以看到,esp32发送的POST报文body中的数据格式跟用POSTMAN发送的报文一致,服务器也能正确处理并返回图片的链接。

学习笔记,有问题欢迎指出

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ESP32开发-HTTP POST请求发送图片 的相关文章

  • UNIX/MacOS 上静态文件的“临时 Web 服务器”?

    是否有一个像小型网络服务器这样的东西 我可以从命令行调用它 只从本地文件系统获取文件并通过特定端口上的 HTTP 为它们提供服务 我希望能够做这样的事情 cd Sites mysite serve 10 0 1 1 8080 这应该会启动一
  • WCF WebHttp 混合身份验证(基本和匿名)

    所有这些都与 WebHttp 绑定有关 托管在自定义服务主机中 IIS 目前不是一个选项 我已经实现了自定义 UserNamePasswordValidator 和自定义 IAuthorizationPolicy 当我将端点的绑定配置为使用
  • Flutter http请求上传mp3文件

    我使用这个 api 上传 mp3 文件 使用这种方法 Future
  • 自定义 HTTP 标头:命名约定

    我们的一些用户要求我们将与其帐户相关的数据包含在HTTP 标头我们向他们发送的请求 甚至是他们从我们的 API 获得的响应 添加自定义 HTTP 标头的一般约定是什么 naming format etc 另外 请随意发布您在网络上偶然发现的
  • 为什么我的 Github 托管网站响应 HTTP 302 而不是 200?

    我拥有该域名penkov id au http penkov id au 我主持一个blog http michael penkov id au blog 2014 01 02 reinventing the wheel html usin
  • 是否可以检测 http git 远程是智能还是愚蠢?

    我正在我的应用程序中实现一个选项来使用 depth 1制作 git repo 的最小功能克隆 我刚刚意识到愚蠢的 http 传输不支持 depth 我想自动检测 http 远程是愚蠢的还是聪明的 这样我就可以省略 depth与哑 http
  • 流星图像、CSS、“普通”Web 服务

    我经常看到这个问题出现 如何在我的 Meteor 网站上放置图像 如何使用 Meteor 托管 标准 网页内容 我尝试添加一个 img src img myimage png 标签但没有图像显示 如何在 Meteor 站点上托管一些文件 将
  • 尝试克隆一个 git 存储库,但它卡在克隆到中

    我使用的是 Windows 10版本 10 0 19042 内部版本 19042 GIT Ver 2 32当尝试使用 git bash 执行以下命令时git clone depth 1 b carla https github com Ca
  • 如何在java中以编程方式访问网页

    有一个网页 我想从中检索某个字符串 为此 我需要登录 单击一些按钮 填充文本框 单击另一个按钮 然后就会出现字符串 我怎样才能编写一个java程序来自动执行此操作 是否有任何有用的库用于此目的 Thanks Try HtmlUnit htt
  • 如何使用 Java 以正确的编码检索 HTML 页面?

    如何使用页面编码中的 HTML 页面读取 HTTP 流 这是我用来获取 HTTP 流的代码片段 输入流读取器有编码可选参数 但我不知道如何获取它 URLConnection conn url openConnection InputStre
  • 在express js中禁用http方法

    我正在我的 Express 应用程序上进行 nessus 测试 这是我得到的 基于每种方法的测试 HTTP 方法 ACL CHECKOUT COPY DELETE GET HEAD LOCK MERGE MKACTIVITY MKCOL 移
  • 无效数据的 REST 响应代码

    如果出现以下情况 应将什么响应代码传递给客户端 用户注册时传递了无效数据 例如电子邮件格式错误 用户名 电子邮件已存在 我选择了403 我还发现了以下我觉得可以用的 维基百科 412 前提条件失败 服务器不满足请求者要求的先决条件之一 提出
  • Rails api 中阻止用户配置文件的最佳 HTTP 状态代码是什么?

    我在 Rails 中为社交应用程序编写了一个 API 这个应用程序就像Facebook一样 用户可以阻止其他用户 如果用户 A 阻止用户 B 则用户 B 无法查看用户 A 的个人资料页面 那么我应该返回的最佳 HTTP 代码状态是什么 40
  • Flex HTTPservice 和 POST,发送文件?

    我使用基本的 Post 将数据发送到 Django 服务器 数据由flex动态创建的base64编码的640 380 PNG图像组成 成分
  • 防止表单重新提交

    第一页包含一个 HTML 表单 第二页 处理提交的数据的代码 第一页中的表格已提交 浏览器被重定向到第二页 第二页处理提交的数据 此时 如果刷新第二页 则会弹出 确认表单重新提交 警报 这可以预防吗 人们过去常采取两种方法 方法一 使用 A
  • Spring RestTemplate - 带有请求正文的http GET [重复]

    这个问题在这里已经有答案了 可能的重复 带请求正文的 HTTP GET https stackoverflow com questions 978061 http get with request body 我在这里读过一些不提倡通过 HT
  • 角度报告进度返回上传的文件总数,而不是进度

    在我的组件中我有这个 this authService addPost post subscribe data gt if data type HttpEventType UploadProgress console log data el
  • Crystal lang如何从http获取二进制文件

    In Ruby require open uri download open http example com download pdf IO copy stream download my file pdf 如何在水晶中做同样的事情 我们
  • 使用 POST 请求向 Jira API 发送 JSON 时出现 System.Net.WebException

    好吧 伙计们 我已经为这个问题苦苦挣扎了一天左右 但没有明确的解决方案 我将从例外开始 The remote server returned an error NotFound at System Net Browser AsyncHelp
  • 如何解决 302 重定向上的 POST 更改为 GET 的问题?

    我网站的某些部分只能通过 HTTPS 访问 不是整个网站 安全与性能妥协 并且如果通过纯 HTTP 发送请求 则 HTTPS 是通过对安全部分的请求进行 302 重定向来强制执行的 问题是对于所有主流浏览器来说 如果您在 POST 上执行

随机推荐

  • c++自定义类型和预处理

    struct 内部初始化变量时 不能用 struct data int x 12 float f 122 5f int pi x data da cout lt lt da f lt lt endl data dap new data 使用
  • 配置 nginx 遇到错误排查(初级)

    系统版本 ubuntu 14 04 nginx 版本 nginx 1 4 6 Ubuntu 本文不是一步步搭建 nginx 的过程 而是我在使用 nginx 的过程中 整理自己遇到的的一些问题 适用于 nginx 遇到问题 排查问题的 ch
  • Neo4J 初次启动与密码

    初次安装成功Neo4J在安装的文件中会有一个bin文件夹 powershell进入bin文件夹执行 neo4j sonsole会有以下结果 D neo4j bin gt neo4j console 2020 09 04 00 57 31 0
  • Python基于PyTorch实现卷积神经网络分类模型(CNN分类算法)项目实战

    说明 这是一个机器学习实战项目 附带数据 代码 文档 视频讲解 如需数据 代码 文档 视频讲解可以直接到文章最后获取 1 项目背景 卷积神经网络 简称为卷积网络 与普通神经网络的区别是它的卷积层内的神经元只覆盖输入特征局部范围的单元 具有稀
  • oracle 9i在线重定义,在oracle 9i下在线重定义表

    9i提供了联机重定义表的方法 可以让你在基本不影响原表的DML情况下修改表结构 实际上 联机重定义表并不是完全的联机重定义 在最后交换表名的时候会短暂地锁定原表和中间表 但这个过程很短暂 相对于传统方法来说 这是一个进步 9i提供了联机重定
  • CNN、BiGRU、BiLSTM代码

    toxicCommentsclassification BiLSTMAttentionNetwork py at master AmritSatpathy toxicCommentsclassification GitHubtoxic co
  • BlueStore 架构及原理分析

    BlueStore 架构及原理分析 Ceph 底层存储引擎经过了数次变迁 目前最常用的是 BlueStore 在 Jewel 版本中引入 用来取代 FileStore 与 FileStore 相比 Bluesore 越过本地文件系统 直接操
  • 算法训练营第四十一天(9.2)

    Leecode 1143 最长公共子序列 题目地址 力扣 LeetCode 官网 全球极客挚爱的技术成长平台 题目类型 最长子序列 class Solution public int longestCommonSubsequence str
  • cython代码编译和setup.py文件编写

    Cython 官方文档 https cython readthedocs io en latest 中文文档 https www bookstack cn read cython doc zh https cython apachecn o
  • visjs DataSet支持的数据类型和选择

    数据类型 DataSet 支持以下数据类型 Name Description Examples Boolean A JavaScript Boolean true false Number A JavaScript Number 32 2
  • MFC的ActiveX控件 - 1

    转自 https blog csdn net babykangaroo article details 45795079 本文是入门学习ActiveX的学习笔记 属于系统学习整个框架部分 具体细节自己写代码时再深入 学习参考书籍是 MFC
  • 找环

    文章目录 找环 1 算法分析 1 1 判断是否存在环 1 2 找出所有环上的所有点 1 3 类拓扑排序找出与度数有关的点集 gt 退化到度数为2的环 1 4 找到以s为源点的最小环 1 5 floyd找到有向图 无向图的最小环 2 模板 2
  • 神秘时代服务器信息没汉化,[聊天

    Server thread ERROR Could not load plugins Msgreplace1 0 jar in folder plugins org bukkit plugin InvalidPluginException
  • Qt界面小技巧之设置不同模块不同颜色

    文章目录 一 效果图 二 使用场景 三 使用方法及分析 3 1 步骤 3 2 分析 总结 一 效果图 下图为不同模块不同颜色的效果图 下方每一个字符都是独立的QLabel控件 模块对应的颜色码 1 rgb 170 85 255 2 rgb
  • 日志异常检测初步实践与探索

    1 背景 日志的主要目的是记录系统 包括服务和业务等 状态和重要的事件帮助定位系统的问题 日志对于理解系统状态和定位性能问题至关重要 因此 日志是在线监控和异常检测的一个重要信息源 在很多业务和服务的故障自愈过程中 日志异常检测与根因分析是
  • 人工智能3d建模算法_从2D到3D的跨越,康云全球首创“人工智能AI+3D自动化建模与展示技术”...

    康云 人工智能AI 3D自动化建模与展示技术 第八届中国创新创业大赛 广东赛区 暨第七届 珠江天使杯 科技创新创业大赛 获奖项目巡礼系列报道八 你还在使用传统的3D建模技术 传统3D建模 模型制作成本高耗时耗力 模型体积大不方便传输 传播
  • 【DirectX12】3.配置FBX_SDK

    配置FBX SDK 1 介绍 FBX格式是现在最主流的用于游戏的3D模型格式 要使用DirectX12绘制模型 当然需要先用这个库来解析模型数据 它的版权协议如下 不是开源的并且是非商用的 假设你完成了一个引擎到时候还需要联系他们讨论版权的
  • 巨头的联盟链选择

    FISCO BCOS是完全开源的联盟区块链底层技术平台 由金融区块链合作联盟 深圳 简称金链盟 成立开源工作组通力打造 开源工作组成员包括博彦科技 华为 深证通 神州数码 四方精创 腾讯 微众银行 亦笔科技和越秀金科等金链盟成员机构 代码仓
  • leetcode-每日一题2022.4.16 最大回文数乘积

    题目 力扣 思路 一个n位数的范围在10 n 1 到10 n 1之间 两个n位数的乘积的位数是2n或2n 1位 除了n 1以外 最大回文整数的位数都是2n位 从大到小枚举每一个可能的回文整数 判断它是否能用两个n位数的乘积来表示 回文整数可
  • ESP32开发-HTTP POST请求发送图片

    HTTP POST请求发送图片 ESP32中有HTTP相关的请求demo 但是demo中只是简单的HTTP header加上body 如果服务器对POST请求有要求 比如数据以key value的形式传输 那么服务器会无法正常处理请求 从而