1.概述
http是一种广泛使用的互联网协议,即使在游戏开发中,也是被广泛使用,进行网络之间数据传输。UE4是目前市场上主流的游戏引擎之一,通过HTTP模块提供了http相关功能api。因此,本文将简单介绍如何在UE4中使用http通信。
2. 代码示例
(资料图)
下面将以一个简单的例子来介绍HTTP模块的使用
(1)新建项目,命名为TestHttp
(2)新建Actor类,命名为HttpActor(此处为了展示方便,继承了AActor,实际使用中根据需要继承自其他的类)
(3)在TestHttp.Build.cs文件中添加"HTTP"模块
模块名.build.cs文件主要添加当前模块所依赖的其他模块,避免引擎编译过程中出错。
UE4中,如果在B模块中使用A模块的函数,除了include相关的头文件,还得在B模块的B.build.cs文件中添加"A"模块,此处即”HTTP"。
如果没有添加,则编译时会产生如下链接错误(UE4中绝大部分链接错误都是没有添加依赖模块导致的)
(4)封装http请求代码
如下,在AHttpActor类中定义了HttpGet,HttpPost和OnRequestComplete三个函数
HttpGet函数,向输入的URL发起GET请求
HttpPost,以POST的方式,向InURL上传InContentString内容,
需要注意POST消息主体的编码格式,笔者在使用过程中,消息主体是序列化后的Json字符串,因此,需要设置Header中的"Content-Type"为Json编码形式,否则UE4 POST请求会引起程序崩溃(crash)。
原因在于,HTTP模块内部,有以下check,即当HttpRequest没有设置"Content-Type"的编码格式且content内容不是URLEncoded编码时,check不通过,而产生崩溃
OnRequestComplete函数,可以理解为请求结束时的回调函数,可以根据实际需要编写相关逻辑,这里为了演示简单,将响应内容显示的屏幕上。
(5)创建以AHttpActor为基类的蓝图
在蓝图类中创建URL变量,并赋值为百度大模型“文心一言”的网址,
在Begin事件中,调用HttpGet函数
运行游戏,可以看到响应内容被打印在屏幕上
3. 参考文档
https://blog.csdn.net/yb0022/article/details/76383297
https://forums.unrealengine.com/t/why-does-the-engine-crash-when-i-post-data-to-a-server/409956
https://imququ.com/post/four-ways-to-post-data-in-http.html
X 关闭
Copyright © 2015-2022 太平洋机械网版权所有 备案号:豫ICP备2022016495号-17 联系邮箱:93 96 74 66 9@qq.com