Part1前言
http请求是最常见的通信协议,本文主要介绍了如何基于UE5的HTTP插件实现仅仅通过一个蓝图函数即可实现http客户端请求。
Part2HTTP插件调用流程
本章介绍http插件的使用流程。
1增加依赖
在Build.cs中添加插件的依赖
PrivateDependencyModuleNames.AddRange(new string[] { "HTTP" });
2头文件引用
#include "Runtime/Online/HTTP/Public/Http.h"
3创建Requet对象
TSharedRef Request = Http->CreateRequest();
4设置url地址
Request->SetURL(ApiBaseUrl + Subroute);
5设置http头内容
这里可以设置校验的token
Request->SetHeader(TEXT("User-Agent"), TEXT("X-UnrealEngine-Agent"));
Request->SetHeader(TEXT("Content-Type"), TEXT("application/json"));
Request->SetHeader(TEXT("Accepts"), TEXT("application/json"));
6设置http的方法
可以设置get方法或者post方法
Request->SetVerb("GET");
Request->SetVerb("POST");
7设置发送的内容
Request->SetContentAsString(ContentJsonString);
8设置回调函数
这里绑定了ResponseIsValid函数,来处理应答的数据
Request->OnProcessRequestComplete().BindUObject(this, &AHttpService::ResponseIsValid);
bool ResponseIsValid(FHttpResponsePtr Response, bool bWasSuccessful);
9发起请求
Request->ProcessRequest();
通过上述9个步骤即可完成整个C++的http的请求。
Part3InHttpClient
我们基于上述的调用流程,进行了二次封装,封装成了适合蓝图使用的http插件。插件github地址:https://github.com/inveta/InHttpClient 整个插件基于UE C++的http库封装的蓝图http库,只需要一个函数即可完成http的调用。
10baseurl相同使用方法
针对前后端分离架构,通过设置baseurl来设置服务器的ip地址,然后后续调用只需要设置subroute即可。可以通过AddHeader来添加token验证这种http头信息。
注意:这个库只支持设置一个baseurl。GetHttpRequest方法和PostHttpRequest方法可以多次调用。使用示例如下:
![651e0e40e16e9bc4c32abb2e1951b372.png](https://i-blog.csdnimg.cn/blog_migrate/aa0a139cba9296cf0adf34dbb289308c.png)
![fa50f03d1c2a63acf88f8a950c8eb394.png](https://i-blog.csdnimg.cn/blog_migrate/ff7240697e76d7df75230b5a3df7b154.png)
11多个不同baseurl使用方法
另外考虑到能够兼容不同baseurl地址的http请求,我们还设计了带有baseurl参数的http请求,同样一个函数搞定了所有。
GetHttpRequestWithBaseUrl方法和PostHttpRequestWithBaseUrl方法可以多次调用。
![94f78ec9f822b2dfcb351afefd71b123.png](https://i-blog.csdnimg.cn/blog_migrate/e0389291c6888f56786fcc20a3f5f755.png)
![f25e78c967ac5808e8232ff106d99246.png](https://i-blog.csdnimg.cn/blog_migrate/617a7c994288a6d3af42c3db346ab53c.png)
Part4总结
本文主要介绍了如何基于UE5的http插件,实现了只需要一个函数即可完成http的调用蓝图插件。
Part5关于IN VETA
IN VETA是一支由建模、美术、UE5组成的年轻团队。
![796e1868a4e5d7cff839f0f4c92dcaa8.jpeg](https://i-blog.csdnimg.cn/blog_migrate/925fc49a010aac64a3dfe562c9508906.jpeg)
我们的开源项目:
https://github.com/inveta
我们致力于三维数字孪生技术分享与研发。
欢迎与各界朋友一起探讨技术与商务合作,一起推动数字孪生的发展。