当前位置: 首页 > news >正文

使用UE4 HttpRequest提交多表单

大部分HTTP库都是支持直接设置多表单字段的但UE4的HttpRequest比较惨只能用SetContent设置整个的TArrayuint8作为请求体所以想要传多表单就要自己拼。首先设置HeaderContent-Type设置为多表单并设置boundaryauto HttpRequest FHttpModule::Get().CreateRequest(); HttpRequest-SetHeader(Content-Type, TEXT(multipart/form-data; boundaryyourboundary)); HttpRequest-SetURL(yourUrl); HttpRequest-SetVerb(POST);boundary想设什么都行但要和后面用的统一。然后拼请求体的数据字段部分FString RequestBody; FString Boundary TEXT(--yourboundary\r\nContent-Disposition: form-data; name); //拼入单个属性 FString Field Boundary TEXT(\) Key TEXT(\\r\n\r\n) Value TEXT(\r\n); RequestBody Field;这里需要注意分隔两个属性的boundary行要比Header里设置的boundary前面多两个横杠然后拼入文件RequestBody TEXT(--yourboundary\r\nContent-Disposition: form-data; name\file\; ); //分隔行和前缀 RequestBody TEXT(filename\) FileName TEXT(\\r\n\r\n); //文件名 //开始拼文件我要传的是文本文件所以都转成字符串 Buffer.Add(0); //结尾拼/0 const char* BufferData (const char*)Buffer.GetData(); RequestBody ANSI_TO_TCHAR(BufferData); //文件内容拼接到RequestBody RequestBody TEXT(\r\n--yourboundary--\r\n); //结尾分隔行拼文件这步需要注意由于我传的是文本文件最后也是用SetContentAsString设置请求体所以可以把Buffer转成字符串。但如果传的是二进制文件那Buffer中间可能就有0这样转成char*时就无法分辨结尾了。这种情况请求体也要直接用TArrayuint8然后使用SetContent设置而不能用FString。另外分隔行最后要有两个横杠注意不要打错。然后把请求体设置进去就可以传了HttpRequest-SetContentAsString(RequestBody); HttpRequest-OnProcessRequestComplete().BindLambda([](FHttpRequestPtr Request, FHttpResponsePtr Response, bool bSuccess) { if (Response.IsValid()) { FString ResponseStr Response-GetContentAsString(); UE_LOG(LogTemp, Warning, TEXT(Upload Response: %s), *ResponseStr); } else { UE_LOG(LogTemp, Error, TEXT(Upload failed)); } }); HttpRequest-ProcessRequest();
http://www.zskr.cn/news/1410372.html

相关文章:

  • LangChain亲儿子LangGraph:解锁复杂Agent
  • Claude代码助手14项配置优化:从配置地狱到10分钟高效开发环境
  • 别再只会用for循环了!用Python二分法5分钟搞定方程求根(附完整代码与避坑指南)
  • SAM-BA烧录避坑指南:搞定AT91SAM9G25的SPI Flash初始化与整包升级
  • 集成电路展测评,挑选适配IC企业的集成电路展 - 品牌2025
  • 终极指南:Qwen3-0.6B-Base模型本地部署全流程,从镜像加载到容器启动只需3步
  • 从InternVL3到SI-1.5:SenseNova系列模型的5代进化与性能跃升之路
  • Linux内核级文件系统分析——文件系统入门内核级文章!
  • 如何快速部署跨平台翻译工具:完整配置指南
  • 2026年 东莞扩散膜厂家推荐榜单:PET/LED/背光纸扩散膜,超薄匀光与光学性能深度解析 - 品牌企业推荐师(官方)
  • 构建智能体马具:子目录CLAUDE.md文件提升项目协作与AI协同效率
  • 使用 Taotoken 聚合平台后,我的 API 调用延迟与稳定性观测记录
  • 避坑指南:给全志V3s开发板(荔枝派/BingPi)编译U-Boot和Linux内核时,那些容易踩的‘坑’
  • react-native-google-analytics-bridge数据层事件推送:提升营销分析精准度的5个方法
  • 解密paraphrase-albert-small-v2模型架构:AlbertModel与均值池化的完美结合
  • 独立开发者如何借助Taotoken的Token Plan降低项目长期成本
  • Arduino-ESP32终极指南:如何用Arduino轻松开发ESP32物联网项目
  • 保姆级教程:在Ubuntu 18.04上用OpenCV C++搞定双目摄像头测距(附完整项目源码)
  • 前端工程师的云端进化:从浏览器到边缘计算的范式转移
  • bert-base-italian-uncased实战:10个意大利语NLP应用场景
  • 企业级龙虾 Claw 产品怎么选?团队能不能用龙虾?
  • IndoBERT Large P2 OpenMind社区贡献指南:如何参与项目开发
  • 目前好用的 AI 视频创作平台有哪些?2026 实用平台盘点
  • 从《监狱来的妈妈》事件谈电影审查的权责统一问题
  • 浏览器Cookie管理新方案:本地化导出工具Get-cookies.txt-LOCALLY深度解析
  • 在Ubuntu 18.04上搞定奥比中光Astra(乐视LeTMC-520)的ROS驱动:从编译到获取RGBD图像的全流程避坑
  • Windows防撤回神器:RevokeMsgPatcher完整使用指南
  • 如何永久保存微信聊天记录:WeChatMsg完整指南让您的数字记忆永不消失
  • 手把手教你:MATLAB硬件支持包离线安装与本地化部署全攻略
  • 3种场景下的Playnite便携版配置:跨设备游戏库管理完全指南