ApiPost7使用介绍 | HTTP Websocket
一、基本介绍
创建项目(团队下面可以创建多个项目节点,每个项目可以创建多个接口):

参数描述库(填写参数时自动填充描述):

新建环境(前置URL、环境变量很有用):

二、HTTP接口介绍
设计接口(后台设计一个接口,比如:名称、接口后段内容、说明、请求参数、响应值):

请求参数包含Headers(请求头) + Body(raw(json) + formData(表单形式)):
Headers:

Body(json):

Body(form data):

分享(外网或内网链接):

后台提供的接口文档:

调试接口(前端人员对接口的传参、结果的一致性进行调试):

三、Websocket接口介绍
调试接口(未设计任何接口内容):

调试接口(需要用户名+密码两个请求参数):

- 分享功能和HTTP接口时的介绍一样。
- 在线测试:http://www.websocket-test.com/
四、自动化测试
新建测试用例(对设计好的接口+测试条件进行测试,一定要保存):

查看测试报告:


五、代码
HTTP
using System;
using System.IO;
using System.Net;
using System.Net.Http;
using System.Threading.Tasks;namespace UnityFramework.Runtime
{/// <summary>/// 以文件流形式作为HttpContent/// 需要进度值使用本Content,否则使用StreamContent/// </summary>public class StreamProgressContent : HttpContent{private const int defaultBufferSize = 4096;// 如果FileStream不适合作为流的父类或者本身,使用Streamprivate readonly FileStream content;private readonly int bufferSize;// 进度回调 已上传字节数 - 总字节数private readonly Action<long, long> progressCallback;public StreamProgressContent(FileStream content, Action<long, long> progressCallback): this(content, defaultBufferSize, progressCallback){}public StreamProgressContent(FileStream content, int bufferSize, Action<long, long> progressCallback){if (bufferSize <= 0){throw new ArgumentOutOfRangeException(nameof(bufferSize));}this.content = content ?? throw new ArgumentNullException(nameof(content));this.bufferSize = bufferSize;this.progressCallback = progressCallback ?? throw new ArgumentNullException(nameof(progressCallback));Headers.ContentLength = content.Length;}protected override async Task SerializeToStreamAsync(Stream stream, TransportContext context){var buffer = new byte[bufferSize];var uploadedBytes = 0L;using (content){while (true){int bytesRead = await content.ReadAsync(buffer, 0, bufferSize);if (bytesRead == 0){break;}await stream.WriteAsync(buffer, 0, bytesRead);uploadedBytes += bytesRead;progressCallback?.Invoke(uploadedBytes, content.Length);}}}protected override bool TryComputeLength(out long length){length = content.Length;return true;}}
}
using System;
using System.IO;
using System.Net;
using System.Net.Http;
using System.Text;
using Cysharp.Threading.Tasks;
using UnityEngine;
using UnityEngine.Networking;namespace UnityFramework.Runtime
{/// <summary>/// 接口确认/// 1.POST or GET/// 2.json or form or stream(File)/// 3.return /// </summary>public static class HttpManager{/** Native:UnityWebRequest* NoNative:HttpWebRequest/HttpClient*//// <summary>/// [√] 以JSON方式上传数据/// </summary>/// <param name="uri">接口地址</param>/// <param name="data">json数据</param>/// <returns>接口返回</returns>public static string PostData(string uri, string data){try{HttpWebRequest req = (HttpWebRequest)WebRequest.Create(uri);req.Method = "POST";req.Timeout = 5000;req.ContentType = "application/json";byte[] bytes = Encoding.UTF8.GetBytes(data);req.ContentLength = bytes.Length;using (Stream reqStream = req.GetRequestStream()){reqStream.Write(bytes, 0, bytes.Length);reqStream.Close();}HttpWebResponse resp = (HttpWebResponse)req.GetResponse();Stream stream = resp.GetResponseStream();if (stream != null){StreamReader reader = new StreamReader(stream, Encoding.UTF8);string result = reader.ReadToEnd();Debug.Log($"Json方式(Http)上传返回:{result}");return result;}}catch (Exception ex){Debug.Log($"[Post data failed]\n{ex.Message}");}return string.Empty;}/// <summary>/// [√] 以表单方式上传数据/// 此方式是Unity API,表单仅能添加Field(int/string)和BinaryData,二进制数据不等于stream/// </summary>/// <param name="uri">接口地址</param>/// <param name="formData">表单数据</param>/// <returns>接口返回</returns>public static async UniTask<string> PostFormDataNative(string uri, WWWForm formData){// 注:还可以用UnityWebRequest.PostWwwFormUnityWebRequest unityWebRequest = UnityWebRequest.Post(uri, formData);await unityWebRequest.SendWebRequest();if (!string.IsNullOrEmpty(unityWebRequest.error)){Debug.Log($"[POST form data native failed]\n{unityWebRequest.error}");return string.Empty;}string result = unityWebRequest.downloadHandler.text;Debug.Log($"表单方式(Unity)上传返回:{result}");unityWebRequest.Dispose();return result;}/// <summary>/// [√] 以表单方式上传数据/// 此方式是Http API,表单不仅可添加string/bytes/stream,还有继承HttpContent的可计算上传进度值的StreamContent/// </summary>/// <param name="uri"></param>/// <param name="formData"></param>/// <returns></returns>public static async UniTask<string> PostFormData(string uri, MultipartFormDataContent formData){try{using (var client = new HttpClient()){// // MultipartFormDataContent示例// var formData = new MultipartFormDataContent();// // 添加string content// formData.Add(new StringContent("contentValue", Encoding.UTF8), "key");// // 添加stream content(不带progress)// formData.Add(new StreamContent(null), "key", "fileName");// // 添加stream content(带progress)// formData.Add(new StreamProgressContent(null, 4096, null));var response = await client.PostAsync(uri, formData);if (response.IsSuccessStatusCode){string result = await response.Content.ReadAsStringAsync();Debug.Log($"表单方式(Http)上传返回:{result}");return result;}Debug.Log($"[Post form data failed]");return string.Empty;}}catch (Exception e){Debug.Log($"[Post form data failed]\n{e}");return string.Empty;}}}
}
Websocket
- 源代码:https://github.com/86K/UnityWebSocket
- 使用文章:https://blog.csdn.net/itsxwz/article/details/130680580?spm=1001.2014.3001.5501
相关文章:
ApiPost7使用介绍 | HTTP Websocket
一、基本介绍 创建项目(团队下面可以创建多个项目节点,每个项目可以创建多个接口): 参数描述库(填写参数时自动填充描述): 新建环境(前置URL、环境变量很有用)&#x…...
Linux常用命令——convertquota命令
在线Linux命令查询工具 convertquota 把老的配额文件转换为新的格式 补充说明 convertquota命令用于将老的磁盘额数据文件(“quota.user”和“quota.group”)转换为新格式的文件(“quota.user”和“quota.group”)。 语法 c…...
Linux 进程基础概念-进程状态、进程构成、进程控制
目录 Linux 进程 进程基础概念 进程状态 进程的构成 进程控制 进程创建和终止 Linux 进程 参考: 「linux操作系统」进程的切换与控制到底有啥关系? - 知乎 (zhihu.com),Linux进程解析_deep_explore的博客-CSDN博客,腾讯面试…...
Unity Animation、Animator 的使用
文章目录 1. 添加动画2. Animation2.1 制作界面2.2 制作好的 Animation 动画2.3 添加和使用事件 3. Animator3.1 制作界面3.2 一些参数解释3.3 动画参数 4. Animator中相关类、属性、API4.1 类4.2 属性4.3 API4.4 几个关键方法 5. 动画播放和暂停控制 1. 添加动画 选中待提添加…...
Flink--2、Flink部署(Yarn集群搭建下的会话模式部署、单作业模式部署、应用模式部署)
星光下的赶路人star的个人主页 你必须赢过,才可以说不在乎输赢 文章目录 1、Flink部署1.1 集群角色1.2 Flink集群搭建1.2.1 集群启动1.2.2 向集群提交作业 1.3 部署模式1.3.1 会话模式(Session Mode)1.3.2 单作业模式(Per-Job Mod…...
执行Django 的迁移命令报错[1193, Unknown system variable default_storage_engine]
在学习“”编写你的第一个 Django 应用程序,第2部分”时候,遇到一个问题。 执行迁移命令 python manage.py makemigrations polls 后,报错: migrations.py:109: RuntimeWarning: Got an error checking a consistent migration …...
Himall商城-公共方法
目录 1 Himall商城-公共方法 1.1 /// 根据订单id获取订单项 1.2 /// 根据订单项id获取售后记录 1.3 /// 判断订单是否正在申请售后 Himall商城-公共方法 #region 公共方法 public static List<InvoiceTitleInfo> GetInvoiceTitles(long userid) {...
海域可视化监管:浅析海域动态远程视频智能监管平台的构建方案
一、方案背景 随着科技的不断进步,智慧海域管理平台已经成为海洋领域监管的一种重要工具。相比传统的视频监控方式,智慧海域管理平台通过建设近岸海域视频监控网、海洋环境监测网和海上目标探测网络等,可实现海洋管理的数字化转型。 传统的…...
使用Spring Boot + MyBatis实现多数据源
一、引言 在开发中,我们经常会遇到需要连接多个数据库的情况。使用Spring Boot和MyBatis框架可以很方便地实现多数据源的配置和使用。本文将详细介绍如何在Spring Boot项目中使用多数据源。 二、实操 1、添加所需的依赖: <!-- Spring Boot Starte…...
C++中的无限循环
C中的无限循环 while、 do…while 和 for 循环都包含一个条件表达式,在它为 false 时循环结束。如果您指定的条件总是为 true,循环就不会结束。 无限 while 循环类似于下面这样: while(true) // while expression fixed to true {DoSomethi…...
Spark2x原理剖析(二)
一、概述 基于社区已有的JDBCServer基础上,采用多主实例模式实现了其高可用性方案。集群中支持同时共存多个JDBCServer服务,通过客户端可以随机连接其中的任意一个服务进行业务操作。即使集群中一个或多个JDBCServer服务停止工作,也不影响用…...
tomcat安装、部署JSPGOU项目、Tomcat多实例
安装 官网找包 Apache Tomcat - Welcome! tomcat 8 准备运行环境 安装tomcat catalina.sh 服务脚本管理文件 server.xml 主配置文件 修改8009(删除注释) 启动tomcat 访问 为了避免每次进入绝对路径启动tomcat 法二: 三:部署…...
257. 二叉树的所有路径
题目链接: 力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台 我的想法: 层次遍历不好解,可用找到叶子节点,但是他有一个回溯过程,他要一直保留路径节点,层次迭代不好加回溯。 递归…...
windows10使用wheel安装tensorflow2.13.0/2.10.0
安装过程 安装虚拟环境安装virtualenv安装满足要求的python版本使用virtualenv创建指定python版本的虚拟环境 安装tensorflow安装tensorflow-docs直接下载使用wheel下载 在VSCode编辑器中使用虚拟环境下的包 注意: tensorflow 2.10.0是最后一个支持GPU的版本 安装虚…...
sql-gen:点击生成SQL、RO、VO的工具
sql-gen仓库地址:码云 Github 1. 概述 sql-gen是一个用于提高后端接口开发效率的小工具,主要有如下功能: 生成连表SQL语句根据WHERE条件来生成封装查询条件的实体类(RO)根据SELECT列来生成封装查询结果的实体类&…...
pytorch从0开始安装
文章目录 一. 安装anaconda1.安装pytorch前需要先安装anaonda,首先进入官网(Anaconda | The Worlds Most Popular Data Science Platform)进行安装相应的版本。2.接着按如图所示安装,遇到下面这个选项时,选择all users.3.选择自己…...
Java 语言实现最小生成树算法(如Prim算法、Kruskal算法)
引言: 在图论中,最小生成树是指一个无向图的生成树,其所有边的权值之和最小。解决最小生成树问题的两种主要算法是Prim算法和Kruskal算法。本文将深入探讨这两种算法并比较它们的优缺点,以帮助读者更好地理解最小生成树算法的原理…...
什么是Linux的Overcommit和OOM
overcommit_memory参数说明: 设置内存分配策略(可选,根据服务器的实际情况进行设置) /proc/sys/vm/overcommit_memory 可选值:0、1、2。 0, 表示内核将检查是否有足够的可用内存供应用进程使用…...
解决防火墙导致虚拟机不能ping通宿主机的问题
今天,无缘无故的,虚拟机突然用不了,网络连上不了,一番折腾翻找,最后才发现,是因为虚拟机ping不同宿主主机了,连网关都ping不通了,但是,宿主主机却可以ping通虚拟机 。 最…...
数据结构:线性表(栈的实现)
文章目录 1. 栈(Stack)1.1 栈的概念1.2 栈的结构链表栈数组栈 2. 栈的定义3. 栈的实现3.1 初始化栈 (StackInit)3.2 入栈 (StackPush)3.3 出栈 (StackPop)3.4 检测栈是否为空 (StackEmpty)3.5 获取栈顶元素 (StackTop)3.6 获取栈中有效元素个数 (StackSize)3.7 销毁栈 (StackDe…...
从零复现DeepSDF:环境配置与数据集生成全攻略
1. 环境准备:从零搭建DeepSDF复现基础 复现DeepSDF的第一步就是搭建合适的环境。这个环节看似简单,实则暗藏玄机。我最初尝试在云服务器上配置环境,结果因为权限问题踩了一堆坑。后来改用本地Ubuntu 16.04系统,整个过程才变得顺畅…...
【超详细】前端必备:从0到1吃透JavaScript闭包,附真实项目避坑指南
文章目录第一章 从“变量生命周期”开始,重新理解作用域链1.1 一个让新手困惑的面试题:循环中的var与let1.2 作用域链的形成:函数定义位置决定了一切第二章 闭包的工程价值:从封装到模块化2.1 数据私有化:用闭包实现真…...
3个核心功能让视频创作者轻松提取硬字幕
3个核心功能让视频创作者轻松提取硬字幕 【免费下载链接】video-subtitle-extractor 视频硬字幕提取,生成srt文件。无需申请第三方API,本地实现文本识别。基于深度学习的视频字幕提取框架,包含字幕区域检测、字幕内容提取。A GUI tool for ex…...
终极指南:如何用智能工具轻松突破内容访问限制
终极指南:如何用智能工具轻松突破内容访问限制 【免费下载链接】bypass-paywalls-chrome-clean 项目地址: https://gitcode.com/GitHub_Trending/by/bypass-paywalls-chrome-clean 内容访问突破工具是现代数字工作者的必备利器,它能帮助研究人员…...
OFA-VE环境部署:Python 3.11+PyTorch+CUDA一站式配置手册
OFA-VE环境部署:Python 3.11PyTorchCUDA一站式配置手册 1. 引言:认识OFA-VE视觉推理系统 OFA-VE是一个基于阿里巴巴达摩院OFA大模型构建的多模态推理平台,专门用于分析图像内容与文本描述之间的逻辑关系。这个系统采用了现代化的赛博朋克视…...
Linux 内核遍历宏介绍
Linux内核中的遍历宏全面详解 Linux内核中大量使用遍历宏(Iteration Macros)来简化数据结构的遍历操作。这些宏提供了类型安全、简洁且高效的遍历方式,是内核编程的核心范式之一。一、遍历宏的分类 1.1 按功能分类 Linux内核遍历宏 ├── 链…...
全民养虾潮背后:智能体产业的产业化困局
2026年3月,如果你在科技园区看到有人抱着电脑排长队,或者听到“养虾了吗”的问候,不必感到奇怪。这只“虾”正是开源AI智能体——OpenClaw。从社交平台刷屏的“养龙虾”攻略到GitHub星标数突破27万,超越Linux登顶全球开源项目榜首…...
Gemma-3-12B-IT WebUI惊艳效果:Agent框架设计+Tool Calling实现
Gemma-3-12B-IT WebUI惊艳效果:Agent框架设计Tool Calling实现 1. 引言:当大模型拥有“手”和“眼” 想象一下,你正在和一个非常聪明的助手聊天。它能回答你的问题,帮你写代码,甚至能创作故事。但当你问它“现在几点…...
技能大赛备赛避坑指南:搞定软件测试五大任务(功能/自动化/性能/单元/接口)的常见错误与调试技巧
技能大赛备赛避坑指南:软件测试五大任务实战排错手册 参加职业院校技能大赛软件测试赛项的师生们,往往在备赛过程中遇到各种"坑":脚本突然报错、环境配置冲突、报告格式被扣分…这些问题看似琐碎,却可能直接影响比赛成绩…...
Asian Beauty Z-Image Turbo基础教程:如何修改默认提示词实现‘旗袍少女’‘水墨仕女’风格
Asian Beauty Z-Image Turbo基础教程:如何修改默认提示词实现‘旗袍少女’‘水墨仕女’风格 想用AI画出充满东方韵味的“旗袍少女”或“水墨仕女”,但试了很多模型,出来的效果总是不对味?要么人物五官太西化,要么画面…...
