ET中发送Get请求和Post请求(C#)

应用场景:一个游戏可能会衍生出其他APP或小程序之类的软件,例如王者营地是王者荣耀的官方APP,王者营地提供资讯、赛事、社区、战绩等功能。所以游戏端会和衍生出来的软件端做一些数据互通。这里把软件端称为中台系统。

Get请求和Post请求的区别

特性GET 请求POST 请求
参数传递方式URL 查询字符串请求体
安全性较低(参数暴露在 URL 中)较高(参数在请求体中)
幂等性是(多次请求结果相同)否(多次请求可能产生不同结果)
缓存支持不支持
使用场景查询数据提交数据、执行操作
请求体不允许允许
URL 长度限制
浏览器行为可直接输入 URL,可收藏、分享通常通过表单提交或 AJAX 发起
服务器处理只读取参数,不修改资源状态根据请求体修改资源状态

举例我在王者营地签到会有奖励,获得后需要在游戏内获取,这就需要游戏后端请求中台系统获得了什么奖励。分别用Get请求和Post请求实现。(实际上这个需求是Get请求,我们不修改中台系统的资源只获取数据)

Get请求实现

 Get请求参数是暴露在URL中的,根据中台系统接口定义返回值类型

public class GetSignInAwardResponse
{public int code;public string msg;public Dictionary<string,Dictionary<int,long>> data;
}

 发送Get请求获取奖励数据

public static async ETTask<Dictionary<int,long>> GetSignInAward(long unitId,string telephone)
{Dictionary<int,long> getAward = new Dictionary<int,long>();//最基础不包含参数的URLstring baseUrl = GetUrl();  //拼接玩家ID和手机号,中台系统用来验证玩家身份从而确定哪些奖励string url = $"{baseUrl}?telephone={telephone}&uid={unitId}";  HttpClient client = new HttpClient();//发送Get请求HttpResponseMessage responseMessage = await client.GetAsync(url);responseMessage.EnsureSuccessStatusCode();//获取返回值string resultText = await responseMessage.Content.ReadAsStringAsync();//Log.Warning(resultText);//序列化返回值GetSignInAwardResponse result = JsonHelper.FromJson<GetSignInAwardResponse>(resultText);if (result.code != ErrorCode.ERR_Success){return null;}getAward = result.data["signInAward"];return getAward;
}

Post请求实现 

Post请求参数在请求体中,我们除了定义返回值还需要定义请求体。

public class GetSignInAwardRequest
{public string telephone;public string uid;
}public class GetSignInAwardResponse
{public int code;public string msg;public Dictionary<string,Dictionary<int,long>> data;
}

发送请求获取返回值

public static async ETTask<GetSignInAwardResponse> GetSignInAward(long unitId,string telephone)
{string url = GetUrl(); //最基础不带参数的URL//给请求体参数赋值GetSignInAwardRequest requestData = new GetSignInAwardRequest();requestData.uid = unitId.ToString();requestData.telephone = telephone;HttpClient client = new HttpClient();//序列化请求参数var data = new StringContent(requestData.ToJson(), Encoding.UTF8, "application/json");//发送Post请求和参数HttpResponseMessage responseMessage = await client.PostAsync(url, data);responseMessage.EnsureSuccessStatusCode();string resultText = await responseMessage.Content.ReadAsStringAsync();return JsonHelper.FromJson<GetSignInAwardResponse>(resultText);
}

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

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

相关文章

华为:数字化转型只有“起点”,没有“终点”

上个月&#xff0c;我收到了一位朋友的私信&#xff0c;他询问我是否有关于华为数字化转型的资料。幸运的是&#xff0c;我手头正好收藏了一些&#xff0c;于是我便分享给他。 然后在昨天&#xff0c;他又再次联系我&#xff0c;并感慨&#xff1a;“如果当初我在进行企业数字…

Android基于Path的addRoundRect,Canvas剪切clipPath简洁的圆形图实现,Kotlin(2)

Android基于Path的addRoundRect&#xff0c;Canvas剪切clipPath简洁的圆形图实现&#xff0c;Kotlin&#xff08;2&#xff09; import android.content.Context import android.graphics.BitmapFactory import android.graphics.Canvas import android.graphics.Path import a…

中化信息与枫清科技深化合作:共探“AI+”产业新生态

随着数字化转型的浪潮席卷全球&#xff0c;数据已成为推动创新和经济增长的关键力量。为持续深化数据要素价值挖掘与应用实践&#xff0c;推动打造行业交流平台&#xff0c;驱动产业创新共荣&#xff0c;2024 年 12 月 18 日 -19 日&#xff0c;由中国通信标准化协会主办的“20…

Matrix-Breakout 2 Morpheus

第一步 信息收集 (1)寻找靶场真实ip arp-scan -l 靶场真实 ip 为192.168.152.154 (2)探测端口及服务 nmap -p- -sV 192.168.52.135 第二步 开始渗透 (1)访问web服务 http://192.168.152.154and http://192.168.52.135:81 发现 81 端口的页面要登录 我们使用 dirb 扫描…

我的AI工具箱Tauri版-ZoomImageSUPIR图像超细节缩放

本教程基于自研的AI工具箱Tauri版进行ZoomImageSUPIR图像超细节缩放。 ZoomImageSUPIR图像超细节缩放 是一款专为图像处理优化的工具&#xff0c;支持图像的高精度放大与缩小操作&#xff0c;满足多场景需求。通过集成 SUPIR&#xff08;Super-resolution Image Processing wi…

软件工程-【软件项目管理】--期末复习题汇总

一、单项选择题 &#xff08;1&#xff09;赶工一个任务时&#xff0c;你应该关注&#xff08; C &#xff09; A. 尽可能多的任务 B. 非关键任务 C. 加速执行关键路径上的任务 D. 通过成本最低化加速执行任务 &#xff08;2&#xff09;下列哪个不是项目管理计划的一部分&…

访问ipv6的坑

如何访问ipv6站点 本机ipv6回环地址: http://[0:0:0:0:0:0:0:1]:8080/index.html 类似ipv4的127.0.0.1 查看本机的ipv6地址 使用ipconfig命令查看 ac900::27bf:9999:6950:dfa7%15需要去掉%符号后面的内容 ac900::27bf:9999:6950:dfa http://[ac900::27bf:9999:6950:dfa]:80…

Java对象的内存分布(一)

一、概览 在Hotspot虚拟机中&#xff0c;java对象在内存中分布如下图所示&#xff1a; --------------------------------------------- | 对象头 | 实例数据 | 对齐填充 | --------------------------------------------- 对象大小 对象头 实例数据 [填…

RY2200 One Cell Li-ion and Li-poly Battery Protection IC

1、Features Protection ofCharger Reverse Connection 50mΩ Low RssoN) Internal Power MOSFET Protection of Battery Cell Reverse Connection Delay Times are generated inside Over-temperature Protection …

H3C MPLS跨域optionB

实验拓扑 实验需求 如图,VPN1 和 VPN2 分别通过运营商 MPLS VPN 连接各自分支机构按照图示配置 IP 地址,VPN1 和 VPN2 连接同一个 PE 设备的私网 IP 网段存在地址复用,使用多 VRF 技术来防止 IP 冲突AS 100 和 AS 200 内部的公共网络中各自运行 OSPF 使 AS 内各设备的 Loo…

harmony动画属性

属性动画 显式动画 转场动画

【day16】Java开发常用API

模块15回顾 在深入探讨模块16之前&#xff0c;让我们回顾一下【day15】中的重点内容&#xff1a; String类&#xff1a; 构造方法&#xff1a;String(), String(String s), String(char[] chars), String(byte[] bytes), String(char[] chars, int offset, int count), String…

申请腾讯混元的API Key并且使用LobeChat调用混元AI

申请腾讯混元的API Key并且使用LobeChat调用混元AI 之前星哥写了一篇文章《手把手教拥有你自己的大模型ChatGPT和Gemini等应用-开源lobe-chat》搭建的开源项目&#xff0c;今天这篇文章教大家如何添加腾讯云的混元模型&#xff0c;并且使用LobeChat调用腾讯混元AI。 申请腾讯混…

3D几何建模引擎Parasolid功能解析

一、什么是Parasolid&#xff1f; Parasolid是由Siemens PLM Software开发的高精度精密几何建模引擎。它全面评估CAD&#xff08;计算机辅助设计&#xff09;、CAM&#xff08;计算机辅助制造&#xff09;、CAE&#xff08;计算机辅助工程&#xff09;、PLM&#xff08;产品生…

QT开发【常用控件1】-Layouts Spacers

在 Qt 中&#xff0c;布局&#xff08;Layouts&#xff09;和间距&#xff08;Spacers&#xff09;是创建用户界面的关键组成部分。它们帮助开发者在窗口或对话框中组织和排列控件&#xff0c;以实现灵活和美观的界面设计。 1. 布局&#xff08;Layouts&#xff09; 布局是 Q…

flink sink doris

接上文&#xff1a;一文说清flink从编码到部署上线 网上关于flink sink drois的例子较多&#xff0c;大部分不太全面&#xff0c;故本文详细说明&#xff0c;且提供完整代码。 flink doris版本对照表 1.添加依赖 <!--doris cdc--><!-- 参考&#xff1a;"https…

【EthIf-14】EthIfGeneral容器配置-02

1.实际EthIfGeneral的配置实例 关闭DET接口开启发送确认中断开启接收中断主周期接收timeout主周期 2. 代码实例参考 阅读此部分代码,搞清楚代码分为几个section,大概瞄一眼就好,不用深究其含义,只需有一个宏观的层次结构的映像即可。 //Appl/GenData/EthIf_Cfg.h #

修炼内功之函数栈帧的创建与销毁

修炼内功之函数栈帧的创建与销毁 一 前置知识&#xff08;1&#xff09;栈&#xff08;2&#xff09;相关寄存器和汇编指令 二 函数栈帧三 代码演示函数栈帧的创建&#xff08;1&#xff09;代码演示&#xff08;2&#xff09;函数栈帧逐帧分析 四 对开篇问题的解答 相信来CSDN…

QT用Enigmavb 打包成单独exe

QT用这个工具打包成单个exe&#xff0c;然后再用winrar打包成zip可以发给别人 在之前需要用QT的release打包 之前的文章QTrelease打包【非单个exe】 Enigmavb 打包流程&#xff1a; 安装过程&#xff1a; next-》i accept -》选择安装位置 -》next -》Create a desktop ic…

图的最短路径(C++实现图【4】)

目录 1. 最短路径 1.1单源最短路径--Dijkstra算法 代码实现 1.2 单源最短路径--Bellman-Ford算法 代码实现 1.3 多源最短路径--Floyd-Warshall算法 代码实现 1. 最短路径 最短路径问题&#xff1a;从在带权有向图G中的某一顶点出发&#xff0c;找出一条通往另一顶点的最短路径&…