UE4 开发如何使用 Http 请求

1,414 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第15天,点击查看活动详情

准备

在项目 .cs 文件中加入依赖的模块:

PublicDependencyModuleNames.AddRange(new string[] {
            "Core",
            "CoreUObject",
            "Engine",
            "InputCore",
            "UMG",
            "SevenColorSDKiOS",
            "Http",
            "Json",
            "Sockets",
            "Networking" });

并且,在需要调用的地方包含头文件 #include "HttpModule.h"

Get 请求

// 创建Http 请求

TSharedRef<IHttpRequest, ESPMode::ThreadSafe> Request = FHttpModule::Get().CreateRequest();
// 设置请求头
Request->SetHeader("Content-Type", "text/javascript;charset=utf-8");
// 设置请求方式
Request->SetVerb("GET");
// 请求的链接
Request->SetURL(URL);
// 发送请求
Request->ProcessRequest();

POST 请求

//获取当前请求
TSharedRef<IHttpRequest, ESPMode::ThreadSafe>* request = THttpRequestMap.Find(CurrentHttpName);
// 设置请求方式
request->Get().SetVerb("POST");
// 请求的链接
request->Get().SetURL(URL);
// 内容包
request->Get().SetContentAsString(jsonStr);
// 设置回调函数
request->Get().OnProcessRequestComplete().BindRaw(this, &FHttpUtil::OnReRequestComplete, CurrentHttpName,URL);
// 发送请求
request->Get().ProcessRequest();

回调

void FHttpUtil::OnReRequestComplete(FHttpRequestPtr HttpRequest, FHttpResponsePtr HttpResponse, bool bSucceeded, FString keyStr,FString Url) {

	if (HttpResponse == nullptr || EHttpRequestStatus::Failed_ConnectionError == HttpRequest->GetStatus())
	{
		return;
	}

	if (!EHttpResponseCodes::IsOk(HttpResponse->GetResponseCode()))
	{
		TSharedRef<TJsonReader<TCHAR>> JsonReader = TJsonReaderFactory<TCHAR>::Create(HttpResponse->GetContentAsString());
		....
	}
	else
	{
		TSharedRef<TJsonReader<TCHAR>> JsonReader = TJsonReaderFactory<TCHAR>::Create(HttpResponse->GetContentAsString());
		....
	}
}

我是杰少,如果您觉的我写的不错,那请给我 点赞+评论+收藏 后再走哦!

往期文章:

请你喝杯 ☕️ 点赞 + 关注哦~

  1. 阅读完记得给我点个赞哦,有👍 有动力
  2. 关注公众号--- HelloWorld杰少,第一时间推送新姿势

最后,创作不易,如果对大家有所帮助,希望大家点赞支持,有什么问题也可以在评论区里讨论😄~**