ApiPost7使用介绍 | HTTP && Websocket

这篇具有很好参考价值的文章主要介绍了ApiPost7使用介绍 | HTTP && Websocket。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、基本介绍

创建项目(团队下面可以创建多个项目节点,每个项目可以创建多个接口):
ApiPost7使用介绍 | HTTP && Websocket,Knowledge,http,websocket,网络协议,ApiPost7
参数描述库(填写参数时自动填充描述):
ApiPost7使用介绍 | HTTP && Websocket,Knowledge,http,websocket,网络协议,ApiPost7
新建环境(前置URL、环境变量很有用):
ApiPost7使用介绍 | HTTP && Websocket,Knowledge,http,websocket,网络协议,ApiPost7

二、HTTP接口介绍

设计接口(后台设计一个接口,比如:名称、接口后段内容、说明、请求参数、响应值):
ApiPost7使用介绍 | HTTP && Websocket,Knowledge,http,websocket,网络协议,ApiPost7
请求参数包含Headers(请求头) + Body(raw(json) + formData(表单形式)):
Headers:
ApiPost7使用介绍 | HTTP && Websocket,Knowledge,http,websocket,网络协议,ApiPost7
Body(json):
ApiPost7使用介绍 | HTTP && Websocket,Knowledge,http,websocket,网络协议,ApiPost7
Body(form data):
ApiPost7使用介绍 | HTTP && Websocket,Knowledge,http,websocket,网络协议,ApiPost7


分享(外网或内网链接):
ApiPost7使用介绍 | HTTP && Websocket,Knowledge,http,websocket,网络协议,ApiPost7
后台提供的接口文档:
ApiPost7使用介绍 | HTTP && Websocket,Knowledge,http,websocket,网络协议,ApiPost7


调试接口(前端人员对接口的传参、结果的一致性进行调试):
ApiPost7使用介绍 | HTTP && Websocket,Knowledge,http,websocket,网络协议,ApiPost7

三、Websocket接口介绍

调试接口(未设计任何接口内容):
ApiPost7使用介绍 | HTTP && Websocket,Knowledge,http,websocket,网络协议,ApiPost7
调试接口(需要用户名+密码两个请求参数):
ApiPost7使用介绍 | HTTP && Websocket,Knowledge,http,websocket,网络协议,ApiPost7

  • 分享功能和HTTP接口时的介绍一样。
  • 在线测试:http://www.websocket-test.com/

四、自动化测试

新建测试用例(对设计好的接口+测试条件进行测试,一定要保存):
ApiPost7使用介绍 | HTTP && Websocket,Knowledge,http,websocket,网络协议,ApiPost7
查看测试报告:
ApiPost7使用介绍 | HTTP && Websocket,Knowledge,http,websocket,网络协议,ApiPost7
ApiPost7使用介绍 | HTTP && Websocket,Knowledge,http,websocket,网络协议,ApiPost7文章来源地址https://www.toymoban.com/news/detail-700801.html

五、代码

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不适合作为流的父类或者本身,使用Stream
        private 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.PostWwwForm
            UnityWebRequest 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的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Apipost全局变量和环境变量的使用

    什么是全局变量? 全局变量跟环境变量作用域不同。全局变量不受当前环境的影响,只要是在同一个项目下,该变量都会生效。 环境变量和全局变量的调用方法都是一样的 {{变量名}} 全局变量的定义 目前通过脚本定义全局变量。 例如我们在预执行脚本中定义一个全局变量

    2024年02月09日
    浏览(39)
  • 使用ApiPost进行接口自动化测试

    自动化测试模块是针对测试人员的复杂业务的测试服务。可以在测试用例中建立一个或多个“测试计划”,“测试计划”由接口和控制器组成。 1、创建步骤 1、在API设计或API调试内保存接口。 2、打开自动化测试-测试用例,新建一个测试计划。 3、在右侧的API添加器内添加接

    2024年02月05日
    浏览(46)
  • apipost 前端使用云端mock实现自定义返回

    目录 一.新建接口 1.选择mock环境 2.设置接口路径,以及相关参数 3.自定应响应示例  4.开启云端mock,设置相应条件 5.更改接口类型post,保存设置,发送请求 6.测试 如图,更改环境   成功示例: 失败示例: 注意,一定要保存才能设置成功 成功示例 : 失败示例:  

    2024年01月16日
    浏览(35)
  • 使用ApiPost进行压力测试(单接口的一键并发压测)

    在API调试页面可进行 一键压测 操作,目前只支持但接口的并发压测。 1、输入并发数、轮次后,点击“开始压测”按钮,等待压测完成; 2、查看压测结果。 图片来源:https://baijiahao.baidu.com/s?id=1754892932902378304wfr=spiderfor=pc 1、并发结果很容易受外界因素影响ÿ

    2024年02月11日
    浏览(58)
  • HTTP初识,fiddler的使用,URL各部分介绍,QueryString

    目录   一、什么是HTTP 二、抓包工具 三、请求的首行 URL 四、URL的各部分详细介绍 现在网页上,我们常见的是https,但是在二十年前是以http为主,这个协议也叫超文本传输协议,文本-字符串,“超文本”-图片/视频 HTTP响应:比如搜狗版的HTML,这个响应的内容,往往是一个htm

    2024年02月08日
    浏览(40)
  • 96.qt qml-http之XMLHttpRequest介绍详解使用

    在QML中我们可以通过XMLHttpRequest 来实现http/https访问网络接口,接下来我们先来学习XMLHttpRequest类的常用部分、 由于QML的XMLHttpRequest少部分参数是没有的,所以本章来单独讲解下。 下章我们来实现旋转请求按钮以及通用的JSON请求模板方法 首先推荐一个http测试工具httpbin,该服务

    2024年02月08日
    浏览(34)
  • 使用接口调试软件(PostMan和APIPost)的技巧和注意事项(附加Get和Post请求区别)

    看完这篇文章,不仅能学会使用接口调试软件,还能 高效 的生成接口说明文档 首先,先来告诉各位Get请求和Post请求的区别 (记住:除了标注是Post的请求,其他都是Get请求) Get请求有: (1). form标签method=get (2). a标签 (3). Iink标签引入css (4). Script标签引入js文件 (5). img标签引入

    2024年04月12日
    浏览(44)
  • 使用 Swagger 导入 Postman 最佳实践与步骤解析_swagger-bootstrap-ui怎么导出到postman或者apipost

    先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7 深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前! 因此收集整理了一份《2024年最新软件测试全套学习资料》

    2024年04月25日
    浏览(36)
  • OneMO模组说|技术学堂-ML307A开发指南(二) OpenCPU HTTP及HTTPS使用介绍

    HTTP 是一个简单的请求 - 响应协议 , 在物联网设备中使用非常广泛 , 可向 HTTP 服务器获取数据、推送数据、下载服务器上的文件、 OTA远程升级等 。 ML307A OpenCPU SDK提供的HTTP API接口最大支持创建4路HTTP实例,且支持GET、POST和PUT等常用请求方法。 本文从使用流程 、 demo代码

    2024年02月09日
    浏览(75)
  • 网络编程——RPC与HTTP基本介绍、历史追溯、主流应用场景、对比分析、为什么还需要使用RPC

    HTTP协议(Hyper Text Transfer Protocol) 超文本传输协议 : 一个用于在网络上交换信息的标准协议,它定义了客户端(例如浏览器)和服务器之间的通信方式。如平时上网在浏览器上敲个网址url就能访问网页,这里用到的就是HTTP协议。 明确 HTTP 是一个协议,是一个超文本传输协议,

    2024年02月16日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包