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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/67500.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

openproject在docker下的安装

官方指引&#xff1a;https://www.openproject.org/docs/installation-and-operations/installation/docker/ 网友指引&#xff1a;https://blog.csdn.net/joefive/article/details/119409550 建个自己的数据文件夹&#xff1a; sudo mkdir -p /var/lib/openproject/{mydata…

C语言中结构体和位段的一些知识

一、结构体 struct stu {char name[20];//20//对齐数为8int age;//4//两个数中最大对齐数为8&#xff0c;而24又是8的整数倍 }; int main () {printf("%d\n", sizeof(struct stu));//只有vs中有对齐数为8&#xff0c;gcc没有对齐数&#xff0c;对齐数为成员变量自…

SpringBoot - Google EventBus、AsyncEventBus

介绍 EventBus 顾名思义&#xff0c;事件总线&#xff0c;是一个轻量级的发布/订阅模式的应用模式&#xff0c;最初设计及应用源与 google guava 库。 相比于各种 MQ 中间件更加简洁、轻量&#xff0c;它可以在单体非分布式的小型应用模块内部使用&#xff08;即同一个JVM范围…

CSS3 知识点

一、【圆角效果】 border-radius: 5px 4px 3px 2px; border-top-right-radius:10px 右上解圆滑 二、【阴影效果】 box-shadow: X轴偏移量 Y轴偏移量 [阴影模糊半径] [阴影扩展半径] [阴影颜色] [投影方式]; box-shadow: 0 0 15px blue inset; 内阴影 三、【颜色之RGBA】 colo…

线上问诊:数仓开发(三)

系列文章目录 线上问诊&#xff1a;业务数据采集 线上问诊&#xff1a;数仓数据同步 线上问诊&#xff1a;数仓开发(一) 线上问诊&#xff1a;数仓开发(二) 线上问诊&#xff1a;数仓开发(三) 文章目录 系列文章目录前言一、ADS1.交易主题1.交易综合统计2.各医院交易统计3.各性…

Golang的类型断言的使用

1.把接口转为结构体&#xff0c;再塞给一个结构体的变量 package main//把接口转为结构体&#xff0c;再塞给一个结构体的变量 // 结构体接口.(结构体) import "fmt"type Point struct {x inty int }func main() {var a interface{}var point Point Point{1, 2}a …

js+html实现打字游戏v2

实现逻辑&#xff0c;看jshtml实现打字游戏v1&#xff0c;在此基础之上增加了从文件读取到的单词&#xff0c;随机选取10个单词。 效果演示 上代码&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8">&l…

window系统 bat脚本开启和关闭防火墙

前言 手动去关闭和开启防火墙太麻烦 命令 开始防火墙 netsh advfirewall set allprofiles state on关闭防火墙 netsh advfirewall set allprofiles state off

Maven高级

目录 1.分模块设计与开发 2.继承与聚合 ​编辑 3.私服 资源上传和下载 1.分模块设计与开发 将项目按照功能拆分成若干个子模块&#xff0c;方便项目的管理维护、扩展&#xff0c;也方便模块间的相互调用&#xff0c;资源共享。 分模块设计需要先针对模块功能进行设计&…

Python+Requests+Pytest+Excel+Allure 接口自动化测试项目实战【框架之间的对比】

--------UnitTest框架和PyTest框架的简单认识对比与项目实战-------- 定义&#xff1a; Unittest是Python标准库中自带的单元测试框架&#xff0c;Unittest有时候也被称为PyUnit&#xff0c;就像JUnit是Java语言的标准单元测试框架一样&#xff0c;Unittest则是Python语言的标…

MySQL——连接查询与子查询

一、连接查询 单表查询&#xff1a;在一张表当中查询数据&#xff0c;叫做单表查询。 连接查询&#xff0c;结合俩&#xff08;多&#xff09;张表&#xff0c;在俩张&#xff08;多&#xff09;表当中查询数据&#xff0c;在一张表当中查询一部分&#xff0c;在另一张表当中…

5个强大的Java分布式缓存框架推荐

在开发中大型Java软件项目时&#xff0c;很多Java架构师都会遇到数据库读写瓶颈&#xff0c;如果你在系统架构时并没有将缓存策略考虑进去&#xff0c;或者并没有选择更优的缓存策略&#xff0c;那么到时候重构起来将会是一个噩梦。 在开发中大型Java软件项目时&#xff0c;很…

C语言之练习题

欢迎来到我的&#xff1a;世界 希望作者的文章对你有所帮助&#xff0c;有不足的地方还请指正&#xff0c;大家一起学习交流 ! 目录 前言填空题&#xff1a;第一题第二题第三题 编程题&#xff1a;第一题&#xff1a;不用加减乘除做加法第二题&#xff1a;完全数计算第三题&am…

字节9.3秋招研发笔试 【后端方向】第三题

题目 小红拿到了一个无向图&#xff0c;初始每人节点是白色&#xff0c;其中有若干个节点被染成了红色。小红想知道&#xff0c;若将 i 号节点染成红色&#xff0c;当前的红色连块的数量是多少? 你需要回答i∈[1,n] 的答案。 定义&#xff0c;若干节点组成一个红色连通块&am…

lintcode 1827 · 停在原地的方案数2 【动态规划 中等 vip】

题目 https://www.lintcode.com/problem/1827/ 有一个长度为 arrLen 的数组&#xff0c;开始有一个指针在索引 0 处。 每一步操作中&#xff0c;你可以将指针向左或向右移动 1 步&#xff0c;或者停在原地&#xff08;指针不能被移动到数组范围外&#xff09;。 给你两个整数…

Redis快速入门

文章目录 1. Centos下Redis安装2. redis.conf配置文件介绍3. redis相关命令4. redis封装系统服务5. 问题与解决 1. Centos下Redis安装 Linux_Study 目录&#xff1a;5.2 https://blog.csdn.net/meini32/article/details/128562114 2. redis.conf配置文件介绍 https://blog.c…

【GPT引领前沿】GPT4技术与AI绘图

推荐阅读&#xff1a; 1、遥感云大数据在灾害、水体与湿地领域典型案例实践及GPT模型应用 2、GPT模型支持下的Python-GEE遥感云大数据分析、管理与可视化技术 GPT对于每个科研人员已经成为不可或缺的辅助工具&#xff0c;不同的研究领域和项目具有不同的需求。例如在科研编程…

Union类型和集合的union()方法-set.union()

Union类型和集合的Union 方法 一、Union类型1.Union类型由来2.Union类型的语法3.Union类型的使用4.一些等价写法 二、Set.union()union() 语法示例代码 一、Union类型 1.Union类型由来 Python中的Union类型是 3.10版本引入的新功能之一。它是一种特殊的类型注释&#xff0c;用…

ChatGPT AIGC 完成动态堆积面积图实例

先使用ChatGPT AIGC描述一下堆积面积图的功能与作用。 接下来一起看一下ChatGPT做出的动态可视化效果图: 这样的动态图案例代码使用ChatGPT AIGC完成。 将完整代码复制如下: <!DOCTYPE html> <html> <head><meta charset="utf-8"><tit…

Ansible_自动化运维实战(一)

1.DELL的一款服务器的价格、型号、配置&#xff08;CPU&#xff0c;内存、硬盘、支持的RAID功能&#xff09; DELL 服务器的定价、型号和配置因型号而异&#xff0c;可以通过访问 DELL 官方网站或联系 DELL 客户服务获取具体信息。一种示例是 DELL PowerEdge R740&#xff0c;其…