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

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

一、基本介绍 创建项目&#xff08;团队下面可以创建多个项目节点&#xff0c;每个项目可以创建多个接口&#xff09;&#xff1a; 参数描述库&#xff08;填写参数时自动填充描述&#xff09;&#xff1a; 新建环境&#xff08;前置URL、环境变量很有用&#xff09;&#x…...

Linux常用命令——convertquota命令

在线Linux命令查询工具 convertquota 把老的配额文件转换为新的格式 补充说明 convertquota命令用于将老的磁盘额数据文件&#xff08;“quota.user”和“quota.group”&#xff09;转换为新格式的文件&#xff08;“quota.user”和“quota.group”&#xff09;。 语法 c…...

Linux 进程基础概念-进程状态、进程构成、进程控制

目录 Linux 进程 进程基础概念 进程状态 进程的构成 进程控制 进程创建和终止 Linux 进程 参考&#xff1a; 「linux操作系统」进程的切换与控制到底有啥关系&#xff1f; - 知乎 (zhihu.com)&#xff0c;Linux进程解析_deep_explore的博客-CSDN博客&#xff0c;腾讯面试…...

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的个人主页 你必须赢过&#xff0c;才可以说不在乎输赢 文章目录 1、Flink部署1.1 集群角色1.2 Flink集群搭建1.2.1 集群启动1.2.2 向集群提交作业 1.3 部署模式1.3.1 会话模式&#xff08;Session Mode&#xff09;1.3.2 单作业模式&#xff08;Per-Job Mod…...

执行Django 的迁移命令报错[1193, Unknown system variable default_storage_engine]

在学习“”编写你的第一个 Django 应用程序&#xff0c;第2部分”时候&#xff0c;遇到一个问题。 执行迁移命令 python manage.py makemigrations polls 后&#xff0c;报错&#xff1a; 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) {...

海域可视化监管:浅析海域动态远程视频智能监管平台的构建方案

一、方案背景 随着科技的不断进步&#xff0c;智慧海域管理平台已经成为海洋领域监管的一种重要工具。相比传统的视频监控方式&#xff0c;智慧海域管理平台通过建设近岸海域视频监控网、海洋环境监测网和海上目标探测网络等&#xff0c;可实现海洋管理的数字化转型。 传统的…...

使用Spring Boot + MyBatis实现多数据源

一、引言 在开发中&#xff0c;我们经常会遇到需要连接多个数据库的情况。使用Spring Boot和MyBatis框架可以很方便地实现多数据源的配置和使用。本文将详细介绍如何在Spring Boot项目中使用多数据源。 二、实操 1、添加所需的依赖&#xff1a; <!-- Spring Boot Starte…...

C++中的无限循环

C中的无限循环 while、 do…while 和 for 循环都包含一个条件表达式&#xff0c;在它为 false 时循环结束。如果您指定的条件总是为 true&#xff0c;循环就不会结束。 无限 while 循环类似于下面这样&#xff1a; while(true) // while expression fixed to true {DoSomethi…...

Spark2x原理剖析(二)

一、概述 基于社区已有的JDBCServer基础上&#xff0c;采用多主实例模式实现了其高可用性方案。集群中支持同时共存多个JDBCServer服务&#xff0c;通过客户端可以随机连接其中的任意一个服务进行业务操作。即使集群中一个或多个JDBCServer服务停止工作&#xff0c;也不影响用…...

tomcat安装、部署JSPGOU项目、Tomcat多实例

安装 官网找包 Apache Tomcat - Welcome! tomcat 8 准备运行环境 安装tomcat catalina.sh 服务脚本管理文件 server.xml 主配置文件 修改8009&#xff08;删除注释&#xff09; 启动tomcat 访问 为了避免每次进入绝对路径启动tomcat 法二&#xff1a; 三&#xff1a;部署…...

257. 二叉树的所有路径

题目链接&#xff1a; 力扣&#xff08;LeetCode&#xff09;官网 - 全球极客挚爱的技术成长平台 我的想法&#xff1a; 层次遍历不好解&#xff0c;可用找到叶子节点&#xff0c;但是他有一个回溯过程&#xff0c;他要一直保留路径节点&#xff0c;层次迭代不好加回溯。 递归…...

windows10使用wheel安装tensorflow2.13.0/2.10.0

安装过程 安装虚拟环境安装virtualenv安装满足要求的python版本使用virtualenv创建指定python版本的虚拟环境 安装tensorflow安装tensorflow-docs直接下载使用wheel下载 在VSCode编辑器中使用虚拟环境下的包 注意&#xff1a; tensorflow 2.10.0是最后一个支持GPU的版本 安装虚…...

sql-gen:点击生成SQL、RO、VO的工具

sql-gen仓库地址&#xff1a;码云 Github 1. 概述 sql-gen是一个用于提高后端接口开发效率的小工具&#xff0c;主要有如下功能&#xff1a; 生成连表SQL语句根据WHERE条件来生成封装查询条件的实体类&#xff08;RO&#xff09;根据SELECT列来生成封装查询结果的实体类&…...

pytorch从0开始安装

文章目录 一. 安装anaconda1.安装pytorch前需要先安装anaonda&#xff0c;首先进入官网&#xff08;Anaconda | The Worlds Most Popular Data Science Platform&#xff09;进行安装相应的版本。2.接着按如图所示安装,遇到下面这个选项时&#xff0c;选择all users.3.选择自己…...

Java 语言实现最小生成树算法(如Prim算法、Kruskal算法)

引言&#xff1a; 在图论中&#xff0c;最小生成树是指一个无向图的生成树&#xff0c;其所有边的权值之和最小。解决最小生成树问题的两种主要算法是Prim算法和Kruskal算法。本文将深入探讨这两种算法并比较它们的优缺点&#xff0c;以帮助读者更好地理解最小生成树算法的原理…...

什么是Linux的Overcommit和OOM

overcommit_memory参数说明&#xff1a; 设置内存分配策略&#xff08;可选&#xff0c;根据服务器的实际情况进行设置&#xff09; /proc/sys/vm/overcommit_memory 可选值&#xff1a;0、1、2。 0&#xff0c; 表示内核将检查是否有足够的可用内存供应用进程使用&#xf…...

解决防火墙导致虚拟机不能ping通宿主机的问题

今天&#xff0c;无缘无故的&#xff0c;虚拟机突然用不了&#xff0c;网络连上不了&#xff0c;一番折腾翻找&#xff0c;最后才发现&#xff0c;是因为虚拟机ping不同宿主主机了&#xff0c;连网关都ping不通了&#xff0c;但是&#xff0c;宿主主机却可以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…...

基于大模型的 UI 自动化系统

基于大模型的 UI 自动化系统 下面是一个完整的 Python 系统,利用大模型实现智能 UI 自动化,结合计算机视觉和自然语言处理技术,实现"看屏操作"的能力。 系统架构设计 #mermaid-svg-2gn2GRvh5WCP2ktF {font-family:"trebuchet ms",verdana,arial,sans-…...

Qt Http Server模块功能及架构

Qt Http Server 是 Qt 6.0 中引入的一个新模块&#xff0c;它提供了一个轻量级的 HTTP 服务器实现&#xff0c;主要用于构建基于 HTTP 的应用程序和服务。 功能介绍&#xff1a; 主要功能 HTTP服务器功能&#xff1a; 支持 HTTP/1.1 协议 简单的请求/响应处理模型 支持 GET…...

多模态大语言模型arxiv论文略读(108)

CROME: Cross-Modal Adapters for Efficient Multimodal LLM ➡️ 论文标题&#xff1a;CROME: Cross-Modal Adapters for Efficient Multimodal LLM ➡️ 论文作者&#xff1a;Sayna Ebrahimi, Sercan O. Arik, Tejas Nama, Tomas Pfister ➡️ 研究机构: Google Cloud AI Re…...

【Go语言基础【13】】函数、闭包、方法

文章目录 零、概述一、函数基础1、函数基础概念2、参数传递机制3、返回值特性3.1. 多返回值3.2. 命名返回值3.3. 错误处理 二、函数类型与高阶函数1. 函数类型定义2. 高阶函数&#xff08;函数作为参数、返回值&#xff09; 三、匿名函数与闭包1. 匿名函数&#xff08;Lambda函…...

嵌入式学习笔记DAY33(网络编程——TCP)

一、网络架构 C/S &#xff08;client/server 客户端/服务器&#xff09;&#xff1a;由客户端和服务器端两个部分组成。客户端通常是用户使用的应用程序&#xff0c;负责提供用户界面和交互逻辑 &#xff0c;接收用户输入&#xff0c;向服务器发送请求&#xff0c;并展示服务…...

【SSH疑难排查】轻松解决新版OpenSSH连接旧服务器的“no matching...“系列算法协商失败问题

【SSH疑难排查】轻松解决新版OpenSSH连接旧服务器的"no matching..."系列算法协商失败问题 摘要&#xff1a; 近期&#xff0c;在使用较新版本的OpenSSH客户端连接老旧SSH服务器时&#xff0c;会遇到 "no matching key exchange method found"​, "n…...

【JVM面试篇】高频八股汇总——类加载和类加载器

目录 1. 讲一下类加载过程&#xff1f; 2. Java创建对象的过程&#xff1f; 3. 对象的生命周期&#xff1f; 4. 类加载器有哪些&#xff1f; 5. 双亲委派模型的作用&#xff08;好处&#xff09;&#xff1f; 6. 讲一下类的加载和双亲委派原则&#xff1f; 7. 双亲委派模…...

LCTF液晶可调谐滤波器在多光谱相机捕捉无人机目标检测中的作用

中达瑞和自2005年成立以来&#xff0c;一直在光谱成像领域深度钻研和发展&#xff0c;始终致力于研发高性能、高可靠性的光谱成像相机&#xff0c;为科研院校提供更优的产品和服务。在《低空背景下无人机目标的光谱特征研究及目标检测应用》这篇论文中提到中达瑞和 LCTF 作为多…...

32单片机——基本定时器

STM32F103有众多的定时器&#xff0c;其中包括2个基本定时器&#xff08;TIM6和TIM7&#xff09;、4个通用定时器&#xff08;TIM2~TIM5&#xff09;、2个高级控制定时器&#xff08;TIM1和TIM8&#xff09;&#xff0c;这些定时器彼此完全独立&#xff0c;不共享任何资源 1、定…...

Java后端检查空条件查询

通过抛出运行异常&#xff1a;throw new RuntimeException("请输入查询条件&#xff01;");BranchWarehouseServiceImpl.java // 查询试剂交易&#xff08;入库/出库&#xff09;记录Overridepublic List<BranchWarehouseTransactions> queryForReagent(Branch…...