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发送的报文一致,服务器也能正确处理并返回图片的链接。

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

ESP32开发-HTTP POST请求发送图片相关推荐

  1. java 图片请求_java中使用scoket模拟http post请求发送图片或文件

    最近遇到个问题,两个系统共用用户的头像,用户的头像在一个系统中保存,这就涉及到将图片通过scoket发送给另一个系统存储的问题,最初的思路是将图片读成byte[]数组,然后发送,但又发现,发送图片的同 ...

  2. 用新浪微博接口发送图片微博失败的原因

    昨天项目开发时遇到一个发送图片微博失败的奇怪问题,在本机发送图片微博是好的,但是放到测试机就是无法发送,代码如下 <?php include_once( 'app/config.php' ); ...

  3. html post 图片,如何发送图片作为多部分POST请求的一部分 - Java HtmlUnit

    我正尝试使用Java将验证码提交给decaptcher.com. Decaptcher并没有很好的解释如何使用他们的API,所以我想弄清楚如何使用HTTP POST请求来提交验证码.下面是示例代码,我 ...

  4. 可以发送图片文件的php聊天室,基于 Swoole 开发实时在线聊天室(十四):发送图片消息...

    基于 Swoole 开发实时在线聊天室(十四):发送图片消息 由 学院君 创建于1年前, 最后更新于 1年前 版本号 #1 2055 views 0 likes 0 collects 上篇教程我们演示 ...

  5. openfire android 发送图片,基于openfire+smack开发Android即时聊天应用[四]-单人聊天、群聊、发送接收文件等...

    这篇文章主要介绍如何实现点对点单人聊天.多人的群聊.以及如何给对方发送文件,如何发送图片消息和语音消息等功能. 1.单人聊天 1.首先创建聊天对象 /** * 创建聊天窗口 * @param jid ...

  6. qq机器人开发第二课-发送图片

    重要的知识点: 监听图片发送,要注意一点 图片除了可能在一般的消息中发送,还有可能是通过离线文件发送来的 qq机器人开发第二课-发送图片

  7. 网络请求以及网络请求下载图片的工具类 android开发java工具类

    2019独角兽企业重金招聘Python工程师标准>>> package cc.jiusan.www.utils;import org.apache.http.HttpEntity; ...

  8. 微信公众号开发笔记(八)发送图片消息

    发送图片消息 上一篇我们已经上传一个图片素材,并且微信服务器也返回给我们一个media_id,接下来我们使用media_id来构造图片消息 代码实现功能 在Message.Util工具类添加代码 1. ...

  9. ESP32开发环境的搭建和 ESP-IDF支持以下调试方法

    ESP32开发环境的搭建 ESP-IDF 支持以下调试方法: 一. JTAG 二. GDB调试 三. 日志系统 四. Core Dump 五. esp32 heap 内存管理简析 ESP32开发环境的 ...

最新文章

  1. 网络编程学习笔记(udp_server函数)
  2. Oracle JDBC版本区别(转)
  3. 4.6 什么是神经风格迁移-深度学习第四课《卷积神经网络》-Stanford吴恩达教授
  4. 正则表达式的深入理解
  5. Some about me
  6. php数组foreach循环添加键值对_循环 - PHP二维数组根据键值对获取一组数组 (不使用foreach)...
  7. LInux下centos6.7 设置字符集,解决乱码问题
  8. 机器学习—LightGBM的原理、优化以及优缺点
  9. 鸿蒙的下一个时期叫什么,华为鸿蒙,一个本属于2025年的产品
  10. 智能中医诊疗系统php代码,中医HIS
  11. ffmpeg转mov为mp4
  12. 即时热榜——月薪3W+自媒体人的必备神器
  13. 雪花屏幕保护程序(VB.ENT)
  14. 对OMAP-L138的PSC模块的理解
  15. 文件23333333
  16. 转载:云计算必将极大影响未来--云泉
  17. 什么是ORM框架?常用的orm框架有哪些?能否不用ORM框架直接使用SQL语句创建WebAPI?
  18. js查找数组中符合条件的元素
  19. 《炬丰科技-半导体工艺》 使用超临界二氧化碳清洗去除晶片表面的Si3N4颗粒
  20. Linux基本bash命令(持续更新)

热门文章

  1. c语言mkdir函数,c函数mkdir无法创建目录,该怎么处理
  2. WebSocket简单调用
  3. Echarts 贴花图案
  4. 重要公告 | 首批Moonbeam Accelerator孵化项目官宣
  5. Linux中批量压缩文件夹
  6. 在 Ubuntu 英文界面下处理中文
  7. sas2ircu、sas3ircu、MegaCli64、hpssacli 阵列卡工具使用
  8. 广东人被冻哭?羽绒服热潮来袭 论国民品牌是如何成功破圈的呢?
  9. PayPal账户须知 “ 风控审核资金冻结政策 ” 已收藏!
  10. js停止setInterval函数的运行